实战代码案例:
1,引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
引入spring-boot-starter-test依赖就好,因为此版本的框架中默认集成了Junit4和Mockito。
2,引入插件TestMe
注意:idea2021.3.3之前的版本都搜索不到这个插件。
3,单元测试代码编写
使用TestMe自动生成单元测试代码:
public class UserServiceImplTest {
//创建模拟对象
@Mock
UserManager userManager;
//注入mock对象
@InjectMocks
UserServiceImpl userServiceImpl;
@Before
public void setUp() {
//使@Mock和@InjectMocks对象生效
MockitoAnnotations.initMocks(this);
}
@Test
public void testGetUserByUid() throws Exception {
User user = new User();
user.setUid(2055755111L);
user.setCountryId(1);
//设置模拟对象的行为
when(userManager.getUserByUid(111L)).thenReturn(user);
//执行代码
User user = userServiceImpl.getUserByUid(111L);
//断言结果是否符合预期
Assert.assertNotNull(user);
}
}
public class UserServiceImpl{
@Autowired
UserManager userManager;
public User getUserByUid(Long uid) {
//Some logics
User user = userManager.getUserByUid(111L);
//Another logics
}
}
4,自动化执行单元测试
不是自动化执行的单元测试都是无意义的,项目中那么多单测,难道一个一个点吗?
引入maven-surefire-plugin插件用于自动化执行单测。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<includes>
<include>com.user.service.UserServiceImpl</include>
</includes>
</configuration>
</plugin>
include里表示需要进行执行的单测类,可以定义一大批类,如:**/*Tests.java(所有以 “Test” 结尾的 Java 文件)。
执行maven命令:
mvn clean test 先清除旧的编译项目,在运行test内容。
target下surefire-reports下可以看到刚刚运行的单测测试报告。
5,生成测试率覆盖报告
命令:
mvn cobertura:cobertura
site下的index.html即可看到覆盖率报告。
大概长这样:
文章来源:https://www.toymoban.com/news/detail-595495.html
文章来源地址https://www.toymoban.com/news/detail-595495.html
到了这里,关于Junit4 + Mockito进行单元测试实战案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!