我有项目A和B,其中B需要A.内部项目AI有一个实用程序类UC,只能用于JUnit测试,因此,它位于项目A的src/test/java
中。只要我在AI中编写测试可以访问UC。但是,如果我运行Maven并希望它在B中执行测试,我会收到编译器错误,因为在B中无法访问UC。
显然,当Eclipse编译某些东西时,Eclipse包括所有源文件夹中的所有类(即,当我在B中编写测试时,它知道UC),而Maven删除了A的最终版本中的所有测试类。
我的问题是:当我使用Maven运行测试时,我需要做什么才能在B中访问UC?
请理解我是Maven的新手,我认为已经提出了类似的问题。但是,我无法将那里写的内容转换成我的问题并修复它。
我希望我很清楚我正在尝试做什么......
答案 0 :(得分:7)
在看了一些之后我终于找到了解决方案:
我偶尔会在其他问题上看到这种模式,所以我想我只是不明白那样......哦,好吧。 * * eyeroll
1 原始链接停止工作。我found it again on archive.org(不介意尴尬的布局)。
答案 1 :(得分:2)
maven-jar-plugin页面 - http://maven.apache.org/plugins/maven-jar-plugin/usage.html - 提到两种方式。简单的方法是创建一个测试jar工件,然后引用它。 (从官方页面公然抄袭的片段)
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
</project>
然后在需要它的项目中使用test-jar类型和测试范围引用它:
<project>
...
<dependencies>
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<type>test-jar</type>
<version>version</version>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
如果你需要做很多事情,你应该考虑将测试代码移到单独的项目中。
答案 2 :(得分:0)
我总是发现测试罐很尴尬。它们有点特殊,因为它们只有在新部署到存储库后才会被使用。否则其他项目看不到更改。这就是为什么我建议创建一些普通项目,您可以使用这些项目将测试助手放入,然后使用测试范围依赖项来引用它们。