当测试包含JUnit@Test注释且没有主类时,如何创建Maven Jar文件
我在一个包中存储了3个测试,它们都利用了JUnit@Test注释。我在这个项目中没有主课。当然,我可以运行As>Maven测试,所有3个测试都将被执行 我使用Install命令创建了一个Jar可执行文件,但是当我尝试运行Jar文件时,我得到了一条消息——“No main manifest attribute”消息 在Maven中处理这个问题的解决方案是什么 我知道在Gradle中,运行Jar可执行文件不需要主类 或者,我是否需要创建一个包含如下主方法的主类:当测试包含JUnit@Test注释且没有主类时,如何创建Maven Jar文件,maven,junit,maven-3,maven-jar-plugin,Maven,Junit,Maven 3,Maven Jar Plugin,我在一个包中存储了3个测试,它们都利用了JUnit@Test注释。我在这个项目中没有主课。当然,我可以运行As>Maven测试,所有3个测试都将被执行 我使用Install命令创建了一个Jar可执行文件,但是当我尝试运行Jar文件时,我得到了一条消息——“No main manifest attribute”消息 在Maven中处理这个问题的解决方案是什么 我知道在Gradle中,运行Jar可执行文件不需要主类 或者,我是否需要创建一个包含如下主方法的主类: public static void
public static void main(String[] args){
List tests = new ArrayList();
tests.add(TestOne.class);
tests.add(TestTwo.class);
for (Class test : tests){
runTests(test);
}
}
private static void runTests(Class test){
Result result = JUnitCore.runClasses(test);
for (Failure failure : result.getFailures()){
System.out.println(failure.toString());
}
}
然而,我觉得这有点违反直觉。生成测试jar
您可以将其添加到pom.xml中,以生成包含所有测试的jar:
<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>
您需要在-cp
参数中添加所有必需的依赖项
测试套件
每个测试都必须一个接一个地执行,但您可以,因此您可以使用单个命令轻松执行所有测试:
@RunWith(Suite.class)
@Suite.SuiteClasses({
SomeTest.class,
SomeOtherTest.class
})
public class SuiteAbcTest {
//normally, this is an empty class
}
并执行测试套件:
java -cp yourproject-1.0.0-tests.jar:junit-4.12.jar:otherdependencies.jar \
junit.textui.TestRunner com.xyz.SuiteAbcTest
我不明白你想如何在没有主类的情况下运行一个JAR?我有3个单独的测试,都包含@Test注释,但也许我确实需要一个主类,如果需要,我该如何创建它?但是你打算如何运行它,至少在概念上是这样?你到底想实现什么?我希望它执行测试,就像我运行测试命令一样。你想把测试打包到jar文件中吗?看看这个问题:优秀的亚历克斯,我会尝试一下,然后再给你回复!顺便说一句,这假设您的测试在maven的测试文件夹中:
src/test/java
(不在src/main/java
)啊,是的,我试图使用它进行编译,但得到一些编译错误,表明我的名为test的包不存在。我会尽力解决的。我还需要一个TestRunner类吗?Alex,我想这实际上是假设我的测试是在src/main/java而不是src/test/java中进行的?我的测试存储在src/test/java中一个名为test的包中,如何引用SuiteAbcTest类中的测试?SuiteAbcTest也必须位于src/test/java
中。测试文件夹中与测试相关的所有内容。然后,maven-jar-plugin
将生成一个包含测试类的jar,然后您就可以使用TestRunner运行它了。
java -cp yourproject-1.0.0-tests.jar:junit-4.12.jar:otherdependencies.jar \
junit.textui.TestRunner com.xyz.SuiteAbcTest