我正在使用Selenium和JUnit来自动化一些测试。我希望能够将其导出到可运行的jar文件中。我无法,我想是因为没有主要方法,JVM不知道要运行什么。...
我看到了这篇帖子how to export (JUnit) test suite as executable jar,它建议添加一个main并从那里运行JUnit。 (我会对那条帖子发表评论,但并没有让我)
public static void main(String[] args) {
JUnitCore.main("folder.package.testClass");
}
我用这个主要方法创建了一个新的Java类,但从未执行过测试类(从eclipse)。另外,如果我尝试导出项目,则会出现错误,并且无法导出。
出于将所有JUnit类导出到1个Jar文件并从那里运行的目的,最好的方法是什么?我可能会构建一个小菜单,用户可以在其中选择他们想要运行的测试类(我假设在某些地方需要主方法。...)。
答案 0 :(得分:3)
您可以通过执行以下操作(仅检查当前情况)来执行测试:
在 test 文件夹下创建测试:
package com.example.junit5;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class FirstTest {
@Test
public void testTrue() {
System.out.println("Executing testTrue()");
assertTrue(true);
}
}
在 src 文件夹下创建您的main(executor)类:
package com.example.junit5;
import org.junit.runner.JUnitCore;
public class Executor {
public static void main(String[] args) {
JUnitCore.main("com.example.junit5.FirstTest");
}
}
以 Java应用程序的身份执行测试。 结果应为:
我的环境配置是:
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
希望这会有所帮助
答案 1 :(得分:3)
以下代码最终对我有用。
package myPackageName;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class testRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(AllTests.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
}
}