我想在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
。它没有像main
和test
一样遵循惯例,这是预期的。有没有办法在main
和test
旁边添加更多文件夹,并遵循相同的约定(包文件未考虑java文件夹)?
如果不是,那么在包含集成测试时,项目结构的最佳实践是什么?它们应该在测试文件夹中吗?如果可能的话,我想避免这种情况。
答案 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文件)。