java - 运行测试时排除 SpringApplicationRunListener
问题描述
我使用了一个库有一个类实现 SpringApplicationRunListener
public class FromLibApplicationRunListener implements SpringApplicationRunListener {...}
这个库加载了很多我在运行测试时不想拥有的东西。所以我尝试创建一个 TestApplication
@SpringBooApplication
@ComponentScan(excudeFilters = @ComponentScan.Filters(type= ASSIGNABLE_TYPE,
value={RealApp.java, FromLibApplicatioRunListener})
public class TestApp {
public static main(String[] args) {
SpringApplication.run(TestApp.class ,args);
}
}
但是当我运行TestApp时,它仍然抛出异常
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.....FromLibApplicationRunListner]: Constructor threw exception; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:184)
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:435)
... 6 more
运行测试时如何删除此库?
解决方案
您可以为此使用配置文件:
- 排除侦听器类的测试配置文件
@Profile("!test")
public class FromLibApplicationRunListener implements SpringApplicationRunListener {...}
- 为测试类设置配置文件
...
@ActiveProfiles("test")
public class MyTest {
或在文件中设置应用程序活动配置application.yaml
文件(或application.properties
)
spring:
profiles:
active: dev
推荐阅读
- java - 在每个方法调用中使用 newInstance() 创建 JAXBContext 是否正确?
- java - 检查方法是否返回相应类的实例
- xml - XML 正则表达式
- google-bigquery - 有没有办法在 BigQuery 中检查查询是否命中缓存结果?
- java - 度量单位 API (JSR-363) - 浮点错误
- jupyter-notebook - 从 jupyter notebook 转换为 tex 时的多行方程
- c# - Asp.net MVC 通过按钮加载而不是直接加载
- php - 基于值 PHP 的多维数组排序/链接
- python-3.x - 如何使用 LOOP 获取列表中每个字典的第一个键的值?
- node.js - NestJS MQTT 微服务的有效@MessagePattern 是什么?