Junit4 + Mockito进行单元测试实战案例


实战代码案例:

1,引入依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>2.1.0.RELEASE</version>
            </dependency>
引入spring-boot-starter-test依赖就好,因为此版本的框架中默认集成了Junit4Mockito

2,引入插件TestMe

​​​​​​​​​​​Junit4 + Mockito进行单元测试实战案例_第1张图片
注意: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下可以看到刚刚运行的单测测试报告。
Junit4 + Mockito进行单元测试实战案例_第2张图片

5,生成测试率覆盖报告

命令:

mvn cobertura:cobertura

site下的index.html即可看到覆盖率报告。
Junit4 + Mockito进行单元测试实战案例_第3张图片
大概长这样:
Junit4 + Mockito进行单元测试实战案例_第4张图片

你可能感兴趣的:(单元测试,junit,java)