3-1.整合JUnit
约 651 字大约 2 分钟
2025-07-15
Spring Boot 技术的定位是简化开发,更具体地说是简化 Spring 程序的开发。为了直观地感受到 Spring Boot 在整合技术方面的简化效果,我们需要先了解在使用非 Spring Boot 技术时,Spring 整合 JUnit 的方式,然后与 Spring Boot 的整合方式进行对比。
1. 非 Spring Boot 方式整合 JUnit
以下是不使用 Spring Boot 技术时,Spring 整合 JUnit 的示例代码:
//加载 spring 整合 junit 专用的类运行器
@RunWith(SpringJUnit4ClassRunner.class)
//指定对应的配置信息
@ContextConfiguration(classes = Springboot04JunitApplication.class)
public class Springboot04JunitApplicationTests {
@Autowired
private BookDao bookDao;
@Test
public void bookDaoTest() {
bookDao.save();
}
}
核心代码是前两个注解:
@RunWith(SpringJUnit4ClassRunner.class)
注解用于设置 Spring 专用的测试类运行器。 Spring 程序有自己独立的运行方式,因此需要指定使用 Spring 提供的类运行方式,而不是 JUnit 默认的运行方式。@ContextConfiguration(classes = Springboot04JunitApplication.class)
注解用于指定 Spring 的核心配置文件或配置类,即告诉 Spring 加载哪个环境配置。
可以发现,如果文件名是固定的,那么这两个注释的内容即为固定格式。SpringBoot 遵循“约定优于配置”(Convention over Configuration)的原则。这意味着对于常见的、重复性的配置,Spring Boot 提供了默认值,开发者无需显式地进行配置。
2. Spring Boot 方式整合 JUnit
Spring Boot 简化了上述配置,通过默认值和约定优于配置的原则,减少了需要手动编写的代码。示例代码如下:
@SpringBootTest
class Springboot04JunitApplicationTests {
//注入你要测试的对象
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
//执行要测试的对象对应的方法
bookDao.save();
}
}
可以看到,使用 @SpringBootTest
注解即可完成整合。Spring Boot 默认会加载引导类作为配置类。
3. 指定引导类
如果需要手动指定引导类,可以通过以下两种方式实现:
- 使用
classes
属性: 在@SpringBootTest
注解中添加classes
属性,指定配置类。
```java
@SpringBootTest(classes = Springboot04JunitApplication.class)
class Springboot04JunitApplicationTests {
// ...
}
```
- 使用
@ContextConfiguration
注解: 仍然使用@ContextConfiguration
注解指定配置类。@SpringBootTest @ContextConfiguration(classes = Springboot04JunitApplication.class) class Springboot04JunitApplicationTests { // ... }
一般而言,
- 如果测试类存在于引导类所在包或子包中,无需指定引导类。
- 如果测试类不存在于引导类所在的包或子包中,需要通过
classes
属性指定引导类。
总而言之,Spring Boot 整合 JUnit 的核心优势在于简化配置,通过 @SpringBootTest
注解和默认配置,减少了手动编写的代码量。