4. SpringBoot —— 单元测试

时间:2023-03-09 19:14:11
4. SpringBoot —— 单元测试

首先在pom文件中引入spring-boot-starter-test

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
</dependency>

测试方式1:

这也是官方推荐的方式,缺点是在真正的多项目开发时,有的项目没有启动类,为了这种方式的测试,还需在 src/test 下构建一个测试启动类

@RunWith(SpringRunner.class)
@SpringBootTest(classes=App.class)
public class RedisUtilTest { @Autowired
private RedisUtil redisUtil ; @Test
public void testAddOrUpdate() {
redisUtil.addOrUpdate("test","ddd");
} }

测试方式2 (人个总结出的方法):

使用 SpringApplicationBuilder 类构建 ApplicationContext实例,但是这种方式需要明确知道相应的@Configuration配置类

1. 定义项目的Configuration类,相当于指定了配置文件

@Configuration
@ConditionalOnMissingBean(RedisUtil.class)
public class EcshopCommonUtilsConfig { @Bean
public RedisUtil redisUtil() {
return new RedisUtil() ;
} }

2.通过SpringApplicationBuilder构建context容器

public class RedisUtilTest {

    @Autowired
private RedisUtil redisUtil ; @Before
public void init() { Class<?>[] sources = {XxxxConfig.class,RedisAutoConfiguration.class} ;
String[] properties = {"spring.redis.host=127.0.0.1","spring.redis.port=6379","spring.redis.database=0","spring.redis.password=xxx"} ; SpringApplicationBuilder builder = new SpringApplicationBuilder().properties(properties)
.web(WebApplicationType.NONE) ;
builder.sources(sources) ;
ConfigurableApplicationContext context = builder.run() ;
this.redisUtil = context.getBean(RedisUtil.class) ;
} @Test
public void testAddOrUpdate() {
redisUtil.addOrUpdate("test","ddd");
} }