与 main 和 test 一起的 IntelliJ 集成测试文件夹

IntelliJ integration test folder alongside main and test

我想向 spring 启动应用程序添加一些集成测试。生成的结构将是这个

MyProject
├── myapp.iml
├── pom.xml
└── src
    ├── integration-test (integration test sources root)
    │   ├── java
    │   │   └── com
    │   │       └── mysite
    │   │           └── myapp
    │   │               └── AppTestIT.java
    │   └── integration-test.iml
    │
    ├── main (sources root)
    │   ├── java
    │   │   └── com
    │   │       └── mysite
    │   │           └── myapp
    │   │               └── App.java
    │   └── main.iml
    │
    └── test (test sources root)
        ├── java
        │   └── com
        │       └── mysite
        │           └── myapp
        │               └── AppTest.java
        └── test.iml

这可能吗?我在 Intellij 15 Ultimate 中执行此操作,但在我的集成测试中它无法将包识别为 com.mysite.myapp。相反,它识别这个 java.com.mysite.myapp。它不遵循预期的 maintest 约定。有没有办法在 maintest 旁边添加更多文件夹并遵循相同的约定(java 文件夹未考虑用于包声明)? 如果不是,那么在包含集成测试时关于项目结构的最佳实践是什么?他们应该在测试文件夹中吗?如果可能的话,我想避免这种情况。

这应该很简单,只需右键单击 integration-test 文件夹,向下滚动到 "Mark Directory As..." 并选择 "Test Sources Root"。

请注意,如果您有其他开发人员从事此项目,他们将必须做同样的事情(除非您共享 IDEA 文件)。

在这种情况下正确的方法是适当地更改 Maven 配置,以便它在命令行上执行构建时也能正常工作(例如在构建服务器等上)。您可以通过配置 build-helper-maven-plugin:

<build>
<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.10</version>
    <executions>
      <execution>
        <id>add-test-source</id>
        <phase>generate-test-sources</phase>
        <goals>
          <goal>add-test-source</goal>
        </goals>
        <configuration>
          <sources>
            <source>src/integration-test/java</source>
          </sources>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

IntelliJ 选择此配置并自动将文件夹标记为测试源文件夹。