JUnit4 基础

JUnit是一个Java语言的单元测试框架。官网为:http://junit.org

你可以在官网找到大量的入门信息。

现在的Maven项目都会主动为你集成JUnit

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
</dependency>

第一个JUnit Demo

创建好Maven项目后,首先我们写一个简单的计算器程序

public class Calculate {
    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;
    }
}

1.测试类创建方法1
我们在test目录下的包中
这里写图片描述
建立一个名为CalculateTest的JUnit Test Case
这里写图片描述

2.测试类创建方法2
我们也可以直接右键需要测试的类,new一个JUnit Test Case, 更改他的source folder到Test目录下
这里写图片描述
单机Next,你就可以为所有该类中的方法生成对应的测试方法。 如果需要测试的方法多的话可以直接使用这种创建方法。
这里写图片描述
这里写图片描述

程序如下:我们先来测试一下加法

package JunitTest.Junit;

import static org.junit.Assert.*;

import org.junit.Test;

public class CalculateTest {

    @Test
    public void testAdd() {
        assertEquals(5,new Calculate().add(3, 3));
    }

}

Run As JUnit Test之后,会看到
这里写图片描述
expect是5 ,但是输出的是6. 这就是测试错误了,3加3应该是6才对。

我们将程序改写成6之后

public class CalculateTest {

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

}

输出为绿色表示正确
这里写图片描述


测试类规范

OK,我们完成第一个Demo之后,来看看测试类有哪些规范

Junit测试规范
1.测试方法上必须使用@Test进行修饰
2.测试方法必须使用public void进行修饰,不能带任何参数
3.新建一个源代码目录(test)存放测试代码
4.测试类的包应该和被测试类的包保持一致
5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
6.测试类最好使用Test作为类名的后缀(不是必须)
7.测试方法最好使用test作为方法名的前缀(不是必须)


JUnit运行流程

@Test:将一个普通的方法修饰成为一个测试方法
@BeforeClass:它会在所有的方法运行前被执行,static修饰
@AfterClass:它会在所有的方法运行结束后被执行,static修饰
@Before:会在每一个测试方法被运行前执行一次
@After:会在每一个测试方法运行后被执行一次
这里写图片描述


JUnit 注解

@Test:将一个普通的方法修饰成为一个测试方法
@BeforeClass:它会在所有的方法运行前被执行,static修饰
@AfterClass:它会在所有的方法运行结束后被执行,static修饰
@Before:会在每一个测试方法被运行前执行一次
@After:会在每一个测试方法运行后被执行一次
@Ignore:所修饰的测试方法会被测试运行器忽略
@RunWith:可以更改测试运行器 org.junit.runner.Runner

@Test注解的两个属性
1.@Test(excepted = XXX.class) 对异常进行捕获

@test(excepted=ArithmeticException.class)//运行时不会出现error或者failure的错误
/*
*本来应该会报错,因为除数为0,但是加了excepted=ArithmeticException.class便不会出现算数异常
*excepted就是将异常捕获了
*/
public void testDivide(){
 assertEquals(3,new Calculate().divide(6,0));
}

2.@Test(timeout = 毫秒) 对方法运行时间进行限定,用于结束死循环或是性能测试

@Test(timeout = 2000)  //2秒之后自动结束循环
public void testWhile(){
    while(true){
        System.out.println("run forever");
    }
}

JUnit 测试套件

测试套件就是组织测试类一起运行的
写一个作为测试套件的入口类,这个类里不包含其它的方法
更改测试运行器Suite.class
将要测试的类作为数组传入到Suite.SuiteClasses({})

@RunWith(Suite.class)  //将测试类改为测试套件类
@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class}) //用数组的形式将测试的类添加到测试套件中
public classSuiteTest{
  //要用public修饰,套件测试类要为空。不能有方法。
}

这里写图片描述
TaskTest1, TaskTest2, TaskTest3中的测试方法都会被运行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值