先看一下JUnit3与4的区别
从前用JUnit3的时候写一个测试的类就需要去继承TestCase这个类,像下面这类
public void setUp() { super .setUp(); }
public void tearDown() { super .tearDown(); }
public void testMethod1() { assertTrue( true ); }
public void test Method2 () {...}
public void test Method3 () {...}
}
JUnit3依赖反射来执行每个以test开头的方法,并且在setUp()和tearDown()这两个方法执行测试类里开始和结束时需要做的准备动作
下面再来看看JUnit4的实现
@Before
public void tearDown() {... }
public void testMethod1() {Assert.assertTrue( true ); }
public void test Method2 () {assertTrue( true );}
public void test Method3 () {...}
}
JUnit4利用Java 5的Annotation特性简化测试用例的编写.现在测试类可以不用继承TestCase类,而以@Before与 @After两个标记代替了TestCase类中实现的setUp()与tearDown()这两个方法,并且方法名不是必须使用 setUp,tearDown,只要方法前使用了标记
断言(assert)
在JUnit4中,因为没有继承TestCase类,所以并不能直接使用assertXXX(),这些方法被封装在了 org.junit.Assert类中,你可以静态的引入该类,并在测试类中调用assertXXX(),或者是以 Assert.assertTrue( true );的形式去调用
异常测试(Exception)
对测试异常,JUnit 4可以用expected=Exception.class 来 期待一个预期的异常,而不必编写try{...}catch(XXX){...}
除零测试
public void doDiv0() {
new Math().div( 127 , 0 );
}
超时测试(timeout)
在@Test,使用"timeout"参数。如果测试运行的时间超过指定的毫秒数,则测试失败。
public void doLongTimeTask() {
double d = 0 ;
for ( int i = 1 ; i < 10000000 ; i ++ )
d += i;
}
@BeforeClass 和 @AfterClass
public static void runBeforeClass (){...}
public static void runAfterClass (){...}