junit4 单元测试

    1、在最新的JUnit 4中,由于有了Annotation的支持,我们的测试方法不需要再以testXxx标识了,而是写上一个@Test标注即可。

     2、甚至MathTest类也不必继承自TestCase。你也许会想到,不继承自TestCase就无法调用assertXxx方法了,正因为如此, 所有的assertXxx方法全部以静态方法被放入了Assert类,使用Assert.assertXxx()调用。

     3、etUp()和tearDown()方法也依赖@Before和@After标记,这样做的最大的好处是在继承体系内不必担心忘记了在 setUp()方法中调用父类的super.setUp()方法,JUnit框架会自动处理父类的@Before和@After标记的方法。

      4、JUnit 4可以用expected=Exception.class来期待一个预期的异常
  列:
 @Test(expected=ArithmeticException.class)
public void doDiv0() {
    new Math().div(127, 0);
}


      5、对于非常耗时的测试,@Test还有一个timeout来标识该方法最长执行时间,超过此时间即表示该测试方法失败
@Test(timeout=1)
public void doLongTimeTask() {
    double d = 0;
    for(int i=1; i<10000000; i++)
        d+=i;
}


以上方法若执行时间超过1ms则测试失败,由于依赖CPU的执行速度,在不同的机器上测试结果也不同

       6、JUnit 4另一个较大的变化是引入了@BeforeClass和@AfterClass,它们在一个Test类的所有测试方法执行前后各执行一次。这是为了能在 @BeforeClass中初始化一些昂贵的资源,例如数据库连接,然后执行所有的测试方法,最后在@AfterClass中释放资源。由于@BeforeClass和@AfterClass仅执行一次,因此它们只能标记静态方法,在所有测试方法中共享的资源也必须是静态引用

       7、由于Java 5的自动Box/Unbox特性,在调用assertEquals()时要特别注意,如果你传入:
 
assertEquals(100F, 100);
则按照自动Box变为:
assertEquals(new Float(100F), new Integer(100));
测试失败,因为Float类和Integer类不是同一类型。
因此要特别注意float和double的测试。事实上对float和double应使用
assertEquals(float, float, float delta);
assertEquals(double, double, double delta);


     8、@Ignore 标签会告诉junit4忽略它所标注的方法

你可能感兴趣的:(java,框架,单元测试,JUnit)