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

Alk*_*ris 3 java integration-testing intellij-idea maven-3 spring-boot

我想在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
Run Code Online (Sandbox Code Playgroud)

这可能吗?我正在这样做Intellij 15 Ultimate,它不能识别com.mysite.myapp我的集成测试中的包.相反,它承认这一点java.com.mysite.myapp.因为它与它不遵循惯例maintest,这是预期.有没有一种方法来添加多个文件夹旁边maintest并遵循相同的约定(java文件夹没有考虑到的包声明)?如果不是,那么在包含集成测试时,项目结构的最佳实践是什么?它们应该在测试文件夹中吗?如果可能的话,我想避免这种情况.

dun*_*nni 16

在这种情况下,正确的方法是适当地更改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>
Run Code Online (Sandbox Code Playgroud)

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


tdd*_*key 14

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

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