【JUnit】Java单元测试

2021-08-19 14:40:50 浏览数 (1)

JUnit

  • 1. 测试流程
  • 2. JUnit
  • 3. Junit生命周期
  • 4. 异常测试
  • 5. 参数化测试
  • 5. 超时测试
  • 6. springboot中的测试
    • 自动化测试

1. 测试流程

2. JUnit

相关术语:

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

3. Junit生命周期

有五个常用注解

  • @Test 标注测试方法
  • @Before 测试方法运行之前运行,初始化测试对象
  • @After 测试方法运行之后运行,销毁测试对象
  • @BeforeClass 测试类开始前执行,初始化重量级测试对象
  • @AfterClass 测试类结束后执行,销毁收尾工作
  1. 调用@BeforeClass
  2. 对于每个测试方法,调用@Before、@Test、@After
  3. 调用@AfterClass

例子:

代码语言:javascript复制
@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中

代码语言:javascript复制
@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. 参数化测试

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

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

代码语言:javascript复制
@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中的测试

参考

自动化测试

参考

0 人点赞