二、Junit里的方法与注释
一、方法
1.setUpBeforeClass方法,在所有方法执行前执行
2.tearDownAfterClass方法,在所有方法执行后执行
3.setUp方法,在测试方法调用前执行
4.这是tearDown方法,在测试方法调用后执行
package com.myz.util; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; /* * 1.@BeforeClass修饰的方法会在所有方法被调用前被执行, * 而且该方法是静态的,所以当测试类被加载后接着就会运行它, * 而且在内存中它只会存在一份实例,它比较适合加载配置文件 * 2.@AfterClass修饰的方法会在所有方法被调用后被执行, * 通常用来对资源的清理,比如关闭数据库的连接 * 3.@Before和@After会在每个测试方法的前后各执行一次 */ public class JunitFlowTest { @BeforeClass public static void setUpBeforeClass() throws Exception { System.out.println("这是setUpBeforeClass方法,在所有方法执行前执行"); } @AfterClass public static void tearDownAfterClass() throws Exception { System.out.println("这是tearDownAfterClass方法,在所有方法执行后执行"); } @Before public void setUp() throws Exception { System.out.println("这是setUp方法,在测试方法调用前执行"); } @After public void tearDown() throws Exception { System.out.println("这是tearDown方法,在测试方法调用后执行"); } @Test public void Test1(){ System.out.println("我是一个测试方法1111"); } @Test public void Test2(){ System.out.println("我是一个测试方法2222"); } }
5.执行结果
这是setUpBeforeClass方法,在所有方法执行前执行
这是setUp方法,在测试方法调用前执行
我是一个测试方法1111
这是tearDown方法,在测试方法调用后执行
这是setUp方法,在测试方法调用前执行
我是一个测试方法2222
这是tearDown方法,在测试方法调用后执行
这是tearDownAfterClass方法,在所有方法执行后执行
二、注释
package com.myz.util; import static org.junit.Assert.assertEquals; import org.junit.Ignore; import org.junit.Test; /** * * @author MYZ *@Test():将一个普通的方法修饰成一个测试方法 * 1.@Test(expected=xx.class)声明可能会遇到的异常,遇到声明的异常时不报错 * 2.@Test(timeout=xx ms)当函数执行时间小于此时间判定为测试成功,否则判为测试Erro并停止此函数的运行 *@Ignore: 所修饰的方法将会被测试运行器忽略 *@RunWith:可以更改测试运行器,一般我们不更改,自定义的测试运行器需要继承org.junit.runner.Runner */ public class AnotationTest { @Test public void testDivide(){ //测试失败erro,由于除数为0引发异常 assertEquals(6, new Calculate().divide(6, 0)); } @Test(expected=ArithmeticException.class) public void testDivide2(){ //测试成功,我们已经预料到了会有算数异常 assertEquals(6, new Calculate().divide(6, 0)); } @Test(timeout=1000) public void testTimeOut(){ while(true){ //测试erro,因为函数实际执行时间超过1s,但是在第1s的时候, 这个函数就会停止执行了 System.out.println("Hello World"); } } @Test(timeout=1000) public void testTimeOut2(){ //测试成功,因为函数实际执行时间小于1s try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Ignore @Test public void testIgnore(){ //整个类测试的时候,这个函数会被忽略执行 System.out.println("I am testIgnore method..."); } }