【JUnit】Java单元测试
程序员文章站
2022-06-15 14:42:20
...
1. 测试流程
2. JUnit
相关术语:
- TestCase:表示一个测试单元
- TestSuite:表示一组TestCase
- TestFixture:测试环境
- TestResult:保存测试结果
- TestRunner:运行测试
- TestListener:监听测试过程,收集测试数据
- Assert:断言
3. Junit生命周期
有五个常用注解
- @Test 标注测试方法
- @Before 测试方法运行之前运行,初始化测试对象
- @After 测试方法运行之后运行,销毁测试对象
- @BeforeClass 测试类开始前执行,初始化重量级测试对象
- @AfterClass 测试类结束后执行,销毁收尾工作
- 调用@BeforeClass
- 对于每个测试方法,调用@Before、@Test、@After
- 调用@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中的测试
自动化测试
上一篇: 免费快捷一键生成SSL证书
下一篇: Tomcat 基础优化