测试中的 NoClassDefFoundError 和 ClassNotFound
NoClassDefFoundError and ClassNotFound in test
嗨,我有一个类似这样的结构。
parent.pom
|-alpha.pom
|-beta.pom
在 beta 中我对 alpha 有依赖性,在 beta 测试中我参考了 alpha 的 src/test/java
中的 class
然而,当我 运行 Beta 测试时,它似乎找不到 Alpha 中的文件。
class 本身正在实现来自 src/main/java
的文件,因此它类似于 FooBarFactoryForTest implements FooBarFactory
。当我在 beta 测试
中执行 new FooBarFactoryForTest()
时,它找不到 FooBarFactoryForTest
同样的结构也适用于 alpha 测试。
有什么想法或建议吗?
那是因为测试 类 没有默认打包在任何项目中,更不用说你的 alpha
项目了。如果您打开了工作区分辨率功能,它可能会在您的 eclipse 中工作。
要使其与 Maven
一起使用,请考虑创建一个仅包含 alpha
中的测试 类 的测试 jar,并将其添加为 beta
中的依赖项。
阅读:https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html
You can produce a jar which will include your test classes and
resources.
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
</project>
To reuse this artifact in an other project, you must declare this
dependency with type test-jar :
<project>
...
<dependencies>
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<type>test-jar</type>
<version>version</version>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
Note: The downside of this solution is that you don't get the
transitive test-scoped dependencies automatically. Maven only resolves
the compile-time dependencies, so you'll have to add all the other
required test-scoped dependencies by hand.
嗨,我有一个类似这样的结构。
parent.pom
|-alpha.pom
|-beta.pom
在 beta 中我对 alpha 有依赖性,在 beta 测试中我参考了 alpha 的 src/test/java
中的 class然而,当我 运行 Beta 测试时,它似乎找不到 Alpha 中的文件。
class 本身正在实现来自 src/main/java
的文件,因此它类似于 FooBarFactoryForTest implements FooBarFactory
。当我在 beta 测试
new FooBarFactoryForTest()
时,它找不到 FooBarFactoryForTest
同样的结构也适用于 alpha 测试。
有什么想法或建议吗?
那是因为测试 类 没有默认打包在任何项目中,更不用说你的 alpha
项目了。如果您打开了工作区分辨率功能,它可能会在您的 eclipse 中工作。
要使其与 Maven
一起使用,请考虑创建一个仅包含 alpha
中的测试 类 的测试 jar,并将其添加为 beta
中的依赖项。
阅读:https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html
You can produce a jar which will include your test classes and resources.
<project> ... <build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> ... </plugins> </build> ... </project>
To reuse this artifact in an other project, you must declare this dependency with type test-jar :
<project> ... <dependencies> <dependency> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> <type>test-jar</type> <version>version</version> <scope>test</scope> </dependency> </dependencies> ... </project>
Note: The downside of this solution is that you don't get the transitive test-scoped dependencies automatically. Maven only resolves the compile-time dependencies, so you'll have to add all the other required test-scoped dependencies by hand.