1 源码解析
1.1 源码解析1(JDK 线程的应用)
1.2 源码解析2(Junit中的应用)
a 可以理解为Runnable为抽象的命令,如果实现类实现了Runnable,实现可以理解为具体执行定的命令
Runnable
package java.lang; public interface Runnable { public abstract void run(); }
日常写Test类两种方式。
a 实现Test接口,测试用例写在里边。
b 继承TestCase也可以,因为TestCase实现了Test接口
Test.java
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package junit.framework; public interface Test {
//统计此次测试一共有多少个TestCase int countTestCases();
//可以理解成命令模式中的execute方法 ,参数var1 统计测试结果 void run(TestResult var1); }
TestCase.java
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package junit.framework; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; public abstract class TestCase extends Assert implements Test { private String fName; public TestCase() { this.fName = null; } public TestCase(String name) { this.fName = name; } public int countTestCases() { return 1; } protected TestResult createResult() { return new TestResult(); } public TestResult run() { TestResult result = this.createResult(); this.run(result); return result; } public void run(TestResult result) { result.run(this); } public void runBare() throws Throwable { Throwable exception = null; this.setUp(); try { this.runTest(); } catch (Throwable var10) { exception = var10; } finally { try { this.tearDown(); } catch (Throwable var11) { if (exception == null) { exception = var11; } } } if (exception != null) { throw exception; } } protected void runTest() throws Throwable { assertNotNull("TestCase.fName cannot be null", this.fName); Method runMethod = null; try { runMethod = this.getClass().getMethod(this.fName, (Class[])null); } catch (NoSuchMethodException var5) { fail("Method \"" + this.fName + "\" not found"); } if (!Modifier.isPublic(runMethod.getModifiers())) { fail("Method \"" + this.fName + "\" should be public"); } try { runMethod.invoke(this); } catch (InvocationTargetException var3) { var3.fillInStackTrace(); throw var3.getTargetException(); } catch (IllegalAccessException var4) { var4.fillInStackTrace(); throw var4; } } public static void assertTrue(String message, boolean condition) { Assert.assertTrue(message, condition); } public static void assertTrue(boolean condition) { Assert.assertTrue(condition); } public static void assertFalse(String message, boolean condition) { Assert.assertFalse(message, condition); } public static void assertFalse(boolean condition) { Assert.assertFalse(condition); } public static void fail(String message) { Assert.fail(message); } public static void fail() { Assert.fail(); } public static void assertEquals(String message, Object expected, Object actual) { Assert.assertEquals(message, expected, actual); } public static void assertEquals(Object expected, Object actual) { Assert.assertEquals(expected, actual); } public static void assertEquals(String message, String expected, String actual) { Assert.assertEquals(message, expected, actual); } public static void assertEquals(String expected, String actual) { Assert.assertEquals(expected, actual); } public static void assertEquals(String message, double expected, double actual, double delta) { Assert.assertEquals(message, expected, actual, delta); } public static void assertEquals(double expected, double actual, double delta) { Assert.assertEquals(expected, actual, delta); } public static void assertEquals(String message, float expected, float actual, float delta) { Assert.assertEquals(message, expected, actual, delta); } public static void assertEquals(float expected, float actual, float delta) { Assert.assertEquals(expected, actual, delta); } public static void assertEquals(String message, long expected, long actual) { Assert.assertEquals(message, expected, actual); } public static void assertEquals(long expected, long actual) { Assert.assertEquals(expected, actual); } public static void assertEquals(String message, boolean expected, boolean actual) { Assert.assertEquals(message, expected, actual); } public static void assertEquals(boolean expected, boolean actual) { Assert.assertEquals(expected, actual); } public static void assertEquals(String message, byte expected, byte actual) { Assert.assertEquals(message, expected, actual); } public static void assertEquals(byte expected, byte actual) { Assert.assertEquals(expected, actual); } public static void assertEquals(String message, char expected, char actual) { Assert.assertEquals(message, expected, actual); } public static void assertEquals(char expected, char actual) { Assert.assertEquals(expected, actual); } public static void assertEquals(String message, short expected, short actual) { Assert.assertEquals(message, expected, actual); } public static void assertEquals(short expected, short actual) { Assert.assertEquals(expected, actual); } public static void assertEquals(String message, int expected, int actual) { Assert.assertEquals(message, expected, actual); } public static void assertEquals(int expected, int actual) { Assert.assertEquals(expected, actual); } public static void assertNotNull(Object object) { Assert.assertNotNull(object); } public static void assertNotNull(String message, Object object) { Assert.assertNotNull(message, object); } public static void assertNull(Object object) { Assert.assertNull(object); } public static void assertNull(String message, Object object) { Assert.assertNull(message, object); } public static void assertSame(String message, Object expected, Object actual) { Assert.assertSame(message, expected, actual); } public static void assertSame(Object expected, Object actual) { Assert.assertSame(expected, actual); } public static void assertNotSame(String message, Object expected, Object actual) { Assert.assertNotSame(message, expected, actual); } public static void assertNotSame(Object expected, Object actual) { Assert.assertNotSame(expected, actual); } public static void failSame(String message) { Assert.failSame(message); } public static void failNotSame(String message, Object expected, Object actual) { Assert.failNotSame(message, expected, actual); } public static void failNotEquals(String message, Object expected, Object actual) { Assert.failNotEquals(message, expected, actual); } public static String format(String message, Object expected, Object actual) { return Assert.format(message, expected, actual); } protected void setUp() throws Exception { } protected void tearDown() throws Exception { } public String toString() { return this.getName() + "(" + this.getClass().getName() + ")"; } public String getName() { return this.fName; } public void setName(String name) { this.fName = name; } }
原文:https://www.cnblogs.com/1446358788-qq/p/12388181.html