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

时间:2016-01-24 12:09:47

标签: java intellij-idea spring-boot maven-3 integration-testing

我想在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文件夹)? 如果不是,那么在包含集成测试时,项目结构的最佳实践是什么?它们应该在测试文件夹中吗?如果可能的话,我想避免这种情况。

2 个答案:

答案 0 :(得分:13)

在这种情况下,正确的方法是适当地更改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选择此配置并将该文件夹自动标记为测试源文件夹。

答案 1 :(得分:10)

这应该像右键单击for (int i = 0; i < items.length; i++) { try { results[i] = Integer.parseInt(items[i]); } catch (NumberFormatException nfe) {}; } 文件夹,向下滚动到“Mark Directory As ...”并选择“Test Sources Root”一样简单。

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