Eclipse JAVA 分离单元测试和集成测试
Posted
技术标签:
【中文标题】Eclipse JAVA 分离单元测试和集成测试【英文标题】:Eclipse JAVA separate unit test and integration test 【发布时间】:2014-05-13 15:12:11 【问题描述】:我正在升级一个只包含用 JAVA 编写的集成测试的项目。
现在我们要编写单元测试,所以我决定创建 src/it/java 文件夹来放置所有现有的测试,并在 src/test/java 中编写新的单元测试
我已经使用 surfire 和 build-helper 来做到这一点。
在命令行中我可以运行
mvn clean install 并且只读取 src/test/java 目录进行测试
当我在做的时候
mvn -Pintegration-test clean install 我看到 src/it/java 中的测试被读取用于测试
所以在命令行中一切正常。
现在我想在 eclip 上导入我的项目。当我这样做时,只有 src/test/java 用作源文件夹。 如何设置 pom.xml 以将 src/test/java 和 src/it/java 作为源文件夹?
**这是我的构建器插件配置
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>process-resources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/it/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
非常感谢!
【问题讨论】:
【参考方案1】:一般有三种方法可以解决这个问题。
使用您已经决定使用的单独文件夹进行集成测试。
.
|-- pom.xml
`-- src
|-- it
| `-- java
| `-- com
| `-- soebes
| `-- maui
| `-- it
| `-- BitMaskIT.java
|-- main
| `-- java
| `-- com
| `-- soebes
| `-- maui
| `-- it
| `-- BitMask.java
`-- test
`-- java
`-- com
`-- soebes
`-- maui
`-- it
`-- BitMaskTest.java
要在 Eclipse 中正常工作,您需要使用 build-helper-maven-plugin 你已经建议了:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-test-source</id>
<!--
This will help m2eclipse to recognize the folder as source
folder after update project configuration.
Based on comment updated.
-->
<phase>validate</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/it/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
但正如您所见,这需要在您的 pom 文件中进行一些补充配置。
除了上述之外,使用 maven-surefire-plugin 进行集成测试是完全错误的,因为 maven-surefire-plugin 用于单元测试,不用于集成测试,所以最好去maven-failsafe-plugin 用于集成测试。
最好遵循单元和集成测试的命名约定。在 maven-surefire-plugin the unit tests follow the following convention:
- *Test.java
- *TestCase.java
- Test*.java
而 maven-failsafe-plugin follow the following convention: 中的集成测试
- *IT.java
- *ITCase.java
- IT*.java
.
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- soebes
| `-- maui
| `-- it
| `-- BitMask.java
`-- test
`-- java
`-- com
`-- soebes
`-- maui
`-- it
|-- BitMaskIT.java
`-- BitMaskTest.java
但有时制作一个单独的模块会更好,它只包含 集成测试将它们与单元测试分开。这可能会有所帮助,如果 集成测试的配置与单元测试不同。
所以制作这样的结构:
+-- root (pom.xml)
+--- mod-it (pom.xml)
+--- mod-core (pom.xml)
您应该遵循 mod-it
中的命名约定来使用 maven-failsafe-plugin
并在maven的integration-test
阶段正确执行集成测试
构建生命周期。
【讨论】:
谢谢你的回复,其实我已经添加了builder-helper-plugin但是eclipse不识别src/it/java文件夹作为源,我需要手动添加,我需要吗在 Eclipse 上安装一些东西?我已经测试在 pom.xml 中添加 testsourcedirectory 但它替换了第一个 src/test/java :) 我不能添加这个标记两次...:( 我必须将build-helper-maven-plugin
绑定到<phase>validate</phase>
。以上<phase>process-resources</phase>
对我不起作用。否则,这个插件为我解决了这个问题。 Eclipse 现在在其自己的源文件夹中显示 src/it/java
。【参考方案2】:
您需要通过以下方式在 Eclipse 中手动添加 src/it/java 文件夹:
项目属性 -> Java 构建路径 -> 源选项卡 -> 添加文件夹。
【讨论】:
是的我现在但是我希望它在我导入项目时自动执行此操作?以上是关于Eclipse JAVA 分离单元测试和集成测试的主要内容,如果未能解决你的问题,请参考以下文章