Java Spring集成测试:无法检测默认资源位置

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

我正在用Maven的Failsafe插件为我的Spring Boot应用程序运行集成测试。当我创建一个简单的测试时,例如:

@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 = {"***", "***"})