# 单元测试
# 概述
HOS分别集成了JUnit和spring-boot-starter-test两个测试框架,分别用于基础测试(没有spring参与的,如普通工具类等)和基于springboot环境的单元测试,可以加快程序编写速度,同时提高编码的质量。
# 基础测试
不依赖spring的功能模块的单元测试 导入依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
创建测试类和测试方法
- 测试类的的命名规则一般是 xxxTest.java ;
- 测试类中测试的方法可以有test前缀;
- 测试方法上加上注解 @Test。
public class HelloTest {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void say() {
}
}
注解介绍
- @BeforeClass:针对所有测试,只执行一次,且必须为static void
- @Before:初始化方法,执行当前测试类的每个测试方法前执行。
- @Test:测试方法,在这里可以测试期望异常和超时时间
- @After:释放资源,执行当前测试类的每个测试方法后执行
- @AfterClass:针对所有测试,只执行一次,且必须为static void
- @Ignore:忽略的测试方法(只在测试类的时候生效,单独执行该测试方法无效)
- @RunWith:可以更改测试运行器 ,缺省值 org.junit.runner.Runner
执行顺序 一个单元测试类执行顺序为:
@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
每一个测试方法的调用顺序为:
@Before –> @Test –> @After
# Spring Boot 中使用 JUnit
加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Spring Boot 测试
// 获取启动类,加载配置,确定装载 Spring 程序的装载方法,它回去寻找 主配置启动类(被 @SpringBootApplication 注解的)
@SpringBootTest(classes = HosApplication.class)
// 让 JUnit 运行 Spring 的测试环境, 获得 Spring 环境的上下文的支持
@RunWith(SpringRunner.class)
public class EmployeeServiceImplTest {
@Autowired
AccountService accountService;
@Test
public void testCache() {
String userTestName = accountService.getAccount("UserTestName", 2233);
String userTestName2 = accountService.getAccount("UserTestName", 2233);
assertEquals(userTestName,userTestName2);
}
}
# 结果示例
成功示例
失败示例