之前一直没有用过Junit,自己写程序的时候一直采用main方法的形式,后来发现main方法中的代码特别臃肿,而且当其他人阅读自己代码时,不清楚自己的测试数据与测试结果,于是在网上找到了Junit测试框架。
junit与传统的main方法测试的优势在于:
1. main方法中的代码不至于特别臃肿,传统的main方法测试没准会引来leader的不满......
2. junit测试代码比较规整,易于阅读,第三者可以非常清楚测试数据与测试结果。
MyEclipse使用Junit:
1. 将junit.jar导入到MyEclipse。
2. 在需测试的类上右键点击,创建Junit Test Case,然后选择New Junit 4 test,设置测试类的所在的包,选择需要创建的方法,Next之后选择需要测试的方法,finish即可。
3. 创建完事之后,就会发现,新添加的类中,新添加了许多针对原方法名的test+原方法名的方法。
4. 由于我们经常使用assertEquals()方法,我们需要导入 import static org.junit.Assert.*; 这个是一个静态导入,表明导入的全部是静态方法。假如需要特定的某个方法,直接import static org.junit.Assert.assertEquals;即可。
5. 最后在每个测试方法中,填写自己的测试用例,调用assertEquals(预期值,实际值),最后直接Run As... Junit test即可出线结果。
Annotation说明:
在Junit使用中,会发现有几个注释,@BeforeClass、@Before、@Test、@After、@AfterClass、@Ignore(可能自己也没有列举全)
1. @BeforeClass注释的方法必须声明为static,方法名不限制,仅仅执行一次并且只有一个这样的方法。
2. @Before注释的方法必须为非static,方法名不限制,可以有多个@Before注释的方法。
3. @Test注释的方法表明这是测试脚本,@Test可以添加参数,比如@Test(expected=XXXException.class)表示执行该方法可能出现异常,当测试的方法出现死循环时,采用@Test(timeout=1000)。
4. @After标注的方法肯定会被执行,即使@Before和@Test标注的方法出现异常也会执行。
5. @AfterClass标注的方法同样会被执行,即使@BeforeClass标注的方法出现异常也会执行。
6. 当有些方法不想测试时,不需要删除,直接标注为@Ignore("这里可以标注原因")。
上述1-5其实就是一个执行顺序,每执行一个测试方法,都会将所有的@Before和@After执行一次(自己测试时是这样的,导入的jar包是junit-4.8.2.jar),但@BeforeClass和@AfterClass仅仅执行一次。
@Test标注的方法执行顺序是按照所在位置的前后顺序执行的(自己测试时是这样的,导入的jar包是junit-4.8.2.jar)。
在Junit中有四个方法,setUpBeforeClass、setUp、tearDown和tearDownAfterClass方法,这几个方法对应@BeforeClass、@Before、@After和@AfterClass注解。
Junit可以设置运行器,当自己不指定时,系统是采用默认的运行器的,默认是(@RunWith(TestClassRunner.class))。
Junit还可以进行参数测试,需要指定Runner为Parameterized.class,在class之前添加@RunWith(Parameterized.class)
原文地址:http://blog.csdn.net/jingang_cq/article/details/36668903