二、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...");
    }
    
    
}

 

posted @ 2018-02-23 21:53  菜鸡蔡文姬  阅读(164)  评论(0编辑  收藏  举报