目标读者
1、Springboot初学者
2、小厂职场小白
1、关于测试
我最近发现一些刚刚参加工作的测试是软件质量保证的最佳办法,也是程序交付的最终环节,测试是一门学科,关于测试的方法有很多,在理论层面有黑河测试、白盒测试,在操作指导方面有边界值测试等等相关方法。相关的文章和书籍汗牛充栋,不胜枚举。由于本人不是专门的测试工程师,在此不做过多赘述。
2、存在问题
当前SpringBoot自动装配式框架使用非常广泛,但是初级程序员对于使用过程中的测试方法没有充分运用SpringBoot提供的便利,往往对于DAO和Service层的测试等controller编写完成后,通过swagger、postman等工具测试,经常导致测试不及时,讲具有问题的代码提交至git仓库。
3、本篇文章主要目的
介绍SpringBoot中的一种测试方法,可以针对已经完成的代码进行测试。
4、方法内容
(1)工程结构,在spring boot工程中,已经自动创建了test文件夹,在其中按照main中的包结构创建相应的包,然后对应相应的类,创建测试类。这种工程结构,便于维护。后续那个类需要测试,在test下的包中创建相应的测试类,测试类的名称与被测试类相同,添加Test后缀。
(2)配置与测试代码编写,
相关依赖,SprinBoot会自动添加spring-boot-starter-test依赖,而junit依赖需要手动添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
编写代码(被测试类),被测试代码包含一个接口和一个实现类,实现类实现了接口的方法,为了演示方便,接口类是根据用户id,查询用户名,实现类直接返回用户名。
/**
* @author admin
*/
public interface UserService {
/**
* 获取用户
* @param id 用户id
* @return 用户名
*/
String findUserNameById(int id);
}
package com.example.testdemo.service.impl;
import com.example.testdemo.service.UserService;
import org.springframework.stereotype.Service;
/**
* @author admin
*/
@Service
class UserServiceImpl implements UserService {
@Override
public String findUserNameById(int id) {
return "张三"+id;
}
}
测试类,是我们本文重点介绍的内容,主要注意的是,需要三个注解
- @RunWith(SpringRunner.class):是一个运行器,再此使用SpringRunner运行
- @SpringBootTest:可以使用让测试类注入需要测试的接口方法
- @Test:添加在测试方法上,表明这是一个测试方法
注意:测试方法命名跟被测试方法相同,后加Test后缀,测试方法必须是void的。
package com.example.testdemo.service.impl;
import com.example.testdemo.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void findUserNameByIdTest(){
for (int i = 0; i < 5; i++) {
String username = userService.findUserNameById(i);
System.out.println(username);
}
}
}
测试结果
版权归原作者 天码村 所有, 如有侵权,请联系我们删除。