Java Spring集成测试:无法检测默认资源位置
我正在用Maven的Failsafe插件为我的Spring Boot应用程序运行集成测试。当我创建一个简单的测试时,例如:Java Spring集成测试:无法检测默认资源位置,java,spring,spring-boot,spring-test,Java,Spring,Spring Boot,Spring Test,我正在用Maven的Failsafe插件为我的Spring Boot应用程序运行集成测试。当我创建一个简单的测试时,例如: @RunWith (SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(App.class) public class MyTestIT { @Test public void test() { assertTrue (true); } } 然后运行mvn
@RunWith (SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(App.class)
public class MyTestIT {
@Test
public void test() {
assertTrue (true);
}
}
然后运行mvn verify
在Spring应用程序启动之前(例如,甚至在Spring启动横幅之前),我会看到以下日志条目:
接着是春季战靴横幅。然后,测试将顺利完成。虽然这些消息以信息日志级别打印,测试运行正常,但我想一切都很好,但我仍然觉得这些消息令人恼火。那么我的配置是否有问题我应该担心这些消息吗?
即使没有什么问题,我仍然想了解那里发生了什么以及这些信息的含义
我的maven故障保护插件
只是使用默认配置,而我的App.java
只是一个用@SpringBootApplication
注释的简单类
更新1:
以下是我的测试插件的配置:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- Ignore any tests that are marked by the @IntegrationTest annotation of Spring Boot -->
<excludedGroups>org.springframework.boot.test.IntegrationTest</excludedGroups>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
maven surefire插件
org.springframework.boot.test.IntegrationTest
maven故障保护插件
2.19.1
集成测试
集成测试
我还配置了一个springbootstarter测试
依赖项,我正在使用springbootdevtools
。除此之外,其他一切都与测试无关
该项目本身非常标准,使用hibernate、mysql和web mvc作为rest端点。我在类通行证上有两个用于spring安全性的配置类
在main/resources
文件夹中,我有一个application.properties
文件和一个log4j2.xml。没有test/resources
文件夹,但是当我将主/resources文件夹复制到test/resources
时,上面的日志消息仍然出现
更新2:
我刚刚创建了一个小示例应用程序,试图重新创建该问题,似乎在我将
log4j2.xml
文件放入参考资料文件夹后,所提到的日志输出就开始出现。我试着把它放在src/main
或src/test
或两者中,效果相同。这是运行Spring集成测试时的默认行为
参考文献
如果从@ContextConfiguration注释中同时省略位置和值属性,TestContext框架将尝试检测默认的XML资源位置。具体来说,GenericXmlContextLoader和GenericXmlWebContextLoader根据测试类的名称检测默认位置。如果您的类名为com.example.MyTest,则GenericXmlContextLoader将从“classpath:com/example/MyTest context.xml”加载您的应用程序上下文。
因此,它与Maven、log4j或资源文件夹的定位/协助无关
我应该担心这些消息吗?
显然一点也不
但我仍然觉得这些消息令人恼火
不知道是否以及如何关闭该检查(当然,您可以通过将
AbstractContextLoader
的日志级别更改为WARN
)来消除它。您可以将注释配置ContextLoader
与@配置结合使用。
有关更多详细信息,请参阅。您可以使用更具体的加载器配置注释您的测试类,并使用Java配置 比如:
@ContextConfiguration(loader=AnnotationConfigContextLoader.class, classes = ScalaTestConfig.class)
其中ScalaTestConfig类用以下注释:
@Configuration
@ComponentScan(basePackages = {"***", "***"})
根据库拉桑加的链接。在我看来很奇怪。如果这是使用默认配置,那么您也可以共享一个重现该问题的项目,对吗?请共享更多详细信息,如项目结构、pom.xml测试配置文件。因为当您运行集成测试时,spring boot应该在执行测试用例之前运行。您是否也有用于测试的资源文件夹?@dambros我目前没有用于测试的资源文件夹,但我创建了一个,问题并没有因此消失。@StéphaneNicoll@Hareesh我更新了问题。在更新它的同时,我创建了一个小的演示项目,看看是否可以在那里复制它,似乎添加了
log4j2.xml
会导致所提到的日志输出。有什么想法吗?谢谢你的回答,它的工作原理与引用的文档中所描述的完全相同。很高兴知道这个特性。我想现在我将忽略这些日志消息,但下次我需要为我的一个集成测试设置自定义配置时,这将非常方便。
@Configuration
@ComponentScan(basePackages = {"***", "***"})