【发布时间】:2020-05-26 19:08:47
【问题描述】:
我有一个配置类,它为RedissonClient 创建bean 并创建CacheManager。如何为此配置类创建单元测试用例。
- 我们可以为
@ConfigurationClass 编写单元测试用例吗? - 如果可以,我们需要如何发展。
我更喜欢用 Groovy 在 Spock Framework 中编写测试用例。如果没有,请使用 Junit 或 Mockito 框架。如何为Spring Boot应用中@Configuration注解的类编写单元测试用例
@Configuration
public class CacheConfiguration {
private static final String CONFIG= "Configuration";
@Value("${redis.server.url}")
private String redisUrl;
@Value("${redis.server.password}")
private String password;
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer().setAddress(redisUrl).setPassword(password);
RedissonClient client = Redisson.create(config);
return client;
}
@Bean
public CacheManager redissonCacheManager(RedissonClient redissonClient) {
Map<String, CacheConfig> config = new HashMap<String, CacheConfig>();
config.put(CONFIG, new CacheConfig(24*60*1000, 12*60*1000));
return new RedissonSpringCacheManager(redissonClient, config);
}
}
【问题讨论】:
-
单独测试它们没有真正意义,因为它们只在 Spring 应用程序中有意义。
-
是的。我同意,假设我们使用其他逻辑构建应用程序,那么我们需要如何确保覆盖使用 @Configuration 注释的类。
-
您可以像任何其他类一样对它进行单元测试,即通过调用其公共方法并验证结果,例如
redissonClient()实际上返回具有预期配置的RedissonClient实例。如果你想测试例如私有成员的值,这将是一个您也可以轻松编写的集成测试。但是问问自己,你是否真的想测试你的应用程序或者 Spring 容器是否有效。 -
@kriegaex 你能检查我的答案,并建议我的答案
-
@m-deinum :你能检查我的答案,并建议我的答案 -
标签: spring spring-boot junit spock spring-boot-test