什么是单元测试
单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性。即Junit单元测试是用来测试类中方法的正确性的。
在没有单元测试之前我们是使用main方法进行测试的,但是只有一个main方法,如果一个方法的测试失败了,其他方法测试会受到影响。无法得到测试的结果报告,需要程序员自己去观察测试是否成功。无法实现自动化测试。
所以后来有公司发明Junit单元测试,对应的优点:
应该达到的要求:
进行预期结果的正确性测试:Junit中Assert类即实现断言功能,根据实际情况会有很多种断言方法。
例如下面例子中的Assert.assertEquals方法中的参数("结果错误打印的message", "方法正确预期得到的结果", 方法执行得到的实际结果 )
UserService,我们才能为其编写测试类UserService进行方法测试/**
业务方法
*/
public class UserService {
public String loginName(String loginName , String passWord){
if("admin".equals(loginName) && "123456".equals(passWord)){
return "登录成功";
}else {
return "用户名或者密码有问题";
}
}
public void selectNames(){
System.out.println(10/2);
System.out.println("查询全部用户名称成功~~");
}
}
TestUserService类中我们分别编写不同的公开、无参、无返回值的测试方法
/**
测试类
*/
public class TestUserService {
/**
测试方法
注意点: 1、必须是公开的,无参数 无返回值的方法
2、测试方法必须使用@Test注解标记。
*/
@Test
public void testLoginName(){
UserService userService = new UserService();
String rs = userService.loginName("admin","123456");
// 进行预期结果的正确性测试:断言。
Assert.assertEquals("您的登录业务可能出现问题", "登录成功", rs );
}
@Test
public void testSelectNames(){
UserService userService = new UserService();
userService.selectNames();
}
}
| 注解 | 说明 |
|---|---|
| @Test | 测试方法 |
| @Before | 用来修饰实例方法,该方法会在每一个测试方法执行之前执行一次。 |
| @After | 用来修饰实例方法,该方法会在每一个测试方法执行之后执行一次。 |
| @BeforeClass | 用来静态修饰方法,该方法会在所有测试方法之前只执行一次。 |
| @AfterClass | 用来静态修饰方法,该方法会在所有测试方法之后只执行一次。 |
| 注解 | 说明 |
|---|---|
| @Test | 测试方法 |
| @BeforeEach | 用来修饰实例方法,该方法会在每一个测试方法执行之前执行一次。 |
| @AfterEach | 用来修饰实例方法,该方法会在每一个测试方法执行之后执行一次。 |
| @BeforeAll | 用来静态修饰方法,该方法会在所有测试方法之前只执行一次。 |
| @AfterAll | 用来静态修饰方法,该方法会在所有测试方法之后只执行一次。 |
Junit5的注解只是在Jnunit4的基础上改成了更直观的名字而已
比如IO流需要加载类,我们就需要: