欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【JUnit】Java单元测试

程序员文章站 2022-06-15 14:42:20
...


1. 测试流程

【JUnit】Java单元测试
【JUnit】Java单元测试

2. JUnit

相关术语:

  • TestCase:表示一个测试单元
  • TestSuite:表示一组TestCase
  • TestFixture:测试环境
  • TestResult:保存测试结果
  • TestRunner:运行测试
  • TestListener:监听测试过程,收集测试数据
  • Assert:断言

【JUnit】Java单元测试

3. Junit生命周期

有五个常用注解

  • @Test 标注测试方法
  • @Before 测试方法运行之前运行,初始化测试对象
  • @After 测试方法运行之后运行,销毁测试对象
  • @BeforeClass 测试类开始前执行,初始化重量级测试对象
  • @AfterClass 测试类结束后执行,销毁收尾工作

【JUnit】Java单元测试

  1. 调用@BeforeClass
  2. 对于每个测试方法,调用@Before、@Test、@After
  3. 调用@AfterClass

例子:

@Test
public void test1(){
	Test t = new Test();
	// 开始测试
}

@Test
public void test2(){
	Test t = new Test();
	// 开始测试
}

@Test
public void test3(){
	Test t = new Test();
	// 开始测试
}

上述的三个测试都需要初始化一个Test对象,因此可以将该对象放到@Before中

@Before
public void setUp(){
	Test t = new Test();
}

@Test
public void test1(){
	// 开始测试
}

@Test
public void test2(){
	// 开始测试
}

@Test
public void test3(){
	// 开始测试
}

这样在每个测试开始时,都会自动调用@Before中的方法

4. 异常测试

异常测试,指的是:该方法必须抛出这个异常,才能通过测试

使用
@Test(expected = NumberFormatExcpetion.class)
标注该测试必须抛出数字格式化异常

5. 参数化测试

参数化测试,指的是:给定测试集{输入,预期输出},然后统一进行测试。

使用下面的代码模板即可(测试绝对值函数为例)

@RunWith(Parameterized.class)
public class MyTest {

    @Parameterized.Parameters
    public static Collection<?> data(){
    	// 构造测试数据,二维数组第一个是输入,第二个是预计输出
        return Arrays.asList(new Object[][]{
                        {0,0},
                        {1,1},
                        {3,"3"}}
                );
    }

    private int input;
    private int expected;
    public MyTest(int input,int expected){
        this.input = input;
        this.expected=expected;
    }

    @Test
    public void test(){
    	// 调用测试方法
        int r = Math.abs(this.input);
        // 进行测试比对
        Assert.assertEquals(this.expected,r);
    }
}

写法固定,只需要更改测试集即可。

5. 超时测试

@Test(timeout=1000)即可

6. springboot中的测试

参考

自动化测试

参考

相关标签: 知识积累