Junit单元测试框架

测试使用Junit4-开发工具IDEA

一:Junit4简单使用

1:Src目录下-编写正常代码

2:与Src同级目录下-创建一个测试目录-如其名叫:test

3:在test目录下创建对应的测试类:如业务类叫(Junit_)-对应的测试类其名叫(JunitTest)

规范:

1:测试方法上必须写@Test注解

2:测试方法必须使用public void 不能带参数和返回值

3:测试单元中的测试方法必须独立运行,测试方法之间不能存在依赖

4:测试类命名,后缀为Test结尾,测试方法命名,前缀按照Test开始

Junit单元测试框架_第1张图片

 测试代码

//模拟业务代码
public class Junit_ {

    public int add(int a,int b){
        return a+b;
    }

    public int subtract(int a,int b){
        return a-b;
    }

    public int multiply(int a,int b){
        return a*b;
    }

    public int divide(int a,int b){
        return a/b;
    }
}
//模拟测试代码
public class JunitTest {

    @Test
    public void testAdd(){
        Assert.assertEquals(6,new Junit_().add(3,3));
    }

    @Test
    public void testSubtract(){
        Assert.assertEquals(0,new Junit_().subtract(3,3));
    }

    @Test
    public void testMultiply(){
        Assert.assertEquals(9,new Junit_().multiply(3,3));
    }

    @Test
    public void testDivide(){
        Assert.assertEquals(1,new Junit_().divide(3,3));
    }
}

二:Junit中常见的注解

A:@BeforeClass-被此注解修饰过的测试方法会在所有方法前被执行,是静态方法,适合用来提前加载配置类

B:@AfterClass-被此注解修饰过的测试方法会在所有方法后被执行,是静态方法,适合用来关闭资源

C:@Before-修饰方法会在@Test方法之前执行

D:@After-修饰方法会在@Test方法之后执行

E:@Test-修饰方法属于普通测试类,其中有两个参数

a:@Test(expected = xxx.Class)期望异常测试

例如:@Test(expected=ArithmeticException.class)

如果测试该方法时产生一个ArithmeticException的异常,则表示测试通过,否则测试不通过,没有达到预期值。

b:@Test(timeout = 毫秒)

设置超时时间,若在设置的时间内方法没有执行完则测试失败,可以测试并发或者文件传输默认超时时间

F:@Ignore-所修饰的测试方法会被测试运行器所忽略

在@Test普通测试方法上标注@Ignore的方法将不再执行

G:@RunWith-可以更改测试运行器

JUnit所有的测试方法都是由测试运行器负责执行,默认的测试运器:BlockJUnit4ClassRunner

a:@RunWith(Suite.class) 其作用是使用JUnit执行一个测试套件。

b:@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境

c:@RunWith(Parameterized.class)参数化测试:对多组数据同时测试

H:@Parameters-生成静态参数用于参数化测试

配合@RunWith(Parameterized.class)参数化测试:对多组数据同时测试,使用

注解执行结果

三:@RunWith(Suite.class)注解详解

测试套件:顾名思义如果像对多个测试类进行集体测试可以使用

a:创建一个SuiteTest空类

b:在SuiteTest类中加入RunWith(Suite.class)

c:和@Suite.SuiteClasses({JunitTest01.class,JunitTest02.class,JunitTest03.class})测试集

Junit单元测试框架_第2张图片

四:@RunWith(Parameterized.class)注解详解

a:更新测试运行器为@RunWith(Parameterized.class)

b:声明变量存放预期值和结果集

c:创建公共有参构造器

d:声明一个返回值为Collection的公共静态方法,并添加注解@Paramenter,其中可以存放多个结果集

解释:用来进行多个结果集的测试,不用在分批去测

@RunWith(Parameterized.class)
public class ParameterJunitTest {
    int expected = 0;
    int input1 = 0;
    int input2 = 0;

    public ParameterJunitTest(int expected, int input1, int input2) {
        this.expected = expected;
        this.input1 = input1;
        this.input2 = input2;
    }

    @Parameterized.Parameters
    public static Collection t(){
        return Arrays.asList(new Object[][]{
                {3,1,2},
                {10,6,4}
        });
    }

    @Test
    public void test(){
        Assert.assertEquals(expected,new Junit_().add(input1,input2));
    }
}

你可能感兴趣的:(单元测试)