junit4今天遇到的有关问题
junit4今天遇到的问题
昨天很奇怪的发现junit上面的annotation都没有生效,然后也看不出来问题,最后检查是发现我使用的是junit4,但是继承了TestCase,在继承了TestCase后好像所有的注解都会生效。
总结一句就是junit4不能继承TestCase。 什么时候有时间了看下源码,我感觉它应该是根据发射如果发现是TestCase的子类,那么就按照junit3的方式进行处理了。
下面再列举下junit3和4的区别:
这两个版本最大的区别在JUnit3.x中测试必须继承 TestCase,并且每个方法名必须以test 开头。比如:testMethod1()而在JUnit4 .x中不必继承 TestCase,采用了注解的方式。只要在测试的方法上加上注解@Test 即可,从而不必再遵循以前的一些显式约定和反射定位测试;在JUnit4 .x中如果继承 了TestCase,注解就不起作用了。并且有很重要的一点就是在JUnit4 .x中继承 了 TestCase后,在OutLine视图中测试单个方法时,结果整个类都run 了。还有一点就是,在3.x中需要实现setUp和tearDown方法,而在4.x中无需这样,可以自定义需要在测试前和测试后的方法,在方法前加上 @before,@after就可以了。所以在JUnit4 .x不必继承 TestCase用注解即可对单个方法进行测试。
JUnit3 | JUnit4 |
必须引入类TestCase import junit.framework.TestCase; |
必须引入 import org.junit.Test ; import static org.junit.Assert.*; |
必须
继承
类TestCase class BaseClassTest extends TestCase |
不需要 |
测试方法必须以test
开头 public void testMethod () |
不需要, 但是类开始的时候要标记 @Test |
通过assert*方法来判断结果 assertTrue(baseClass.method ().equals(“test .junit.BaseClass”)); |