自己写一个JUnit3-day2
day2
一直使用javac然后再java终归是不方便,IDEA的存在就是为了解放我们的双手。
IDEA菜单栏Run——Edit Configurations,点击左上角的+,在弹出层中选择Application,填写完成点击OK。然后点击菜单栏Run——Run 'MyJUnit3' 即可。
JUnit支持setUp()和tearDown()方法,但是在JUnit3中,每执行一个test方法,就会把setUp()和tearDown()执行一遍。JUnit4中则一个类中只会执行一次。
新建抽象类MyTestCase,两个方法,setUp()和tearDown(),方法体为空
public abstract class MyTestCase { public void setUp() { } public void tearDown() { } }
新建JUnit3Demo,继承MyTestCase,并重写setUp()和tearDown()
public class JUnit3Demo extends MyTestCase { @Override public void setUp() { System.out.println("setUp"); } @Override public void tearDown() { System.out.println("tearDown"); } public void testAdd1(){ System.out.println("testAdd1===="); } public void testAdd2(){ System.out.println("testAdd2===="); } }
新建MyUnit3
public class MyUnit3 { public static void main(String[] args) throws Exception { Class c = Class.forName(args[0]);//args[0]获取运行参数,假定第一个运行参数即为需要执行的测试类。并加载该类 //Object o = c.newInstance(); MyTestCase o = (MyTestCase) c.newInstance(); Method[] methods = c.getMethods();//获取所有方法,然后遍历得到符合要求的方法,通过invoke()执行 for (Method m : methods) { if (isTestMethod(m)) { o.setUp(); //执行setUp() m.invoke(o); o.tearDown(); //执行tearDown() } } } private static boolean isTestMethod(Method m) { String methodName = m.getName(); int modifier = m.getModifiers(); Class returnType = m.getReturnType(); return methodName.startsWith("test") && 1 == modifier && returnType.equals(Void.TYPE); } }
运行 MyUnit3 ,com.wangc.day2.JUnit3Demo作为运行参数
基本上算是实现了在test前执行setUp在test后执行tearDown这个需求了,而且,一不小心使用了一种设计模式——模板方法模式。
突然发现,牛逼又吹早了,应该先把文章都写完了再发布。这才刚刚开头就准备放弃了。
前两篇都是等下一篇写好了,才把这一篇发布,day2已经写完好久了,在笔记里躺了10天了,day3还没开始写,周末只想躺着。。。

浙公网安备 33010602011771号