我有一个 TestNG 项目。没有任何主类,目前它像“Run As TestNG”一样运行。
我想将它导出为可运行的 jar 或 jar,以便任何人都可以从命令行点击命令并开始运行测试用例。
任何人都可以帮助我吗?或建议任何其他方式以可运行的形式交付代码......
我没有使用蚂蚁或 Maven。
谢谢
我有一个 TestNG 项目。没有任何主类,目前它像“Run As TestNG”一样运行。
我想将它导出为可运行的 jar 或 jar,以便任何人都可以从命令行点击命令并开始运行测试用例。
任何人都可以帮助我吗?或建议任何其他方式以可运行的形式交付代码......
我没有使用蚂蚁或 Maven。
谢谢
经过一番谷歌搜索后,我似乎找到了解决方案。这在 Eclipse (Juno) 中运行良好。
假设您有一个名为“Tests.java”的 TestNG 文件。正如您正确指出的那样,不会有一个带有 main 方法的类。因此,我们必须在同一个包下创建一个新的 Java 类文件。让我们将其命名为“MainOne.java”。这将有一个带有 main 方法的类。
这是您需要的代码:
import com.beust.testng.TestNG;
public class MainOne {
public static void main(String[] args) {
TestNG testng = new TestNG();
Class[] classes = new Class[]{Tests.class};
testng.setTestClasses(classes);
testng.run();
}
将“MainOne.java”作为 Java 应用程序运行。然后右键单击包 -> 导出 -> Runnable Jar [Choose 'MainOne' as Launch Configuration] -> Finish。
我目前的理解是,为了从 TestNG 的并行性中受益,从命令行而不是从 Eclipse IDE 内部运行 Java 类时,应该使用 org.testng 的 jar 文件中的静态 main 方法。
然后问题变成了类路径,它定义了 java 如何找到所有 JAR 文件。我发现http://javarevisited.blogspot.com/2012/10/5-ways-to-add-multiple-jar-to-classpath-java.html最有用,因为它提到了 * 通配符 --- 非常当您需要引用 Selenum + TestNG + 自定义测试套件所需的所有 jar 文件时很有帮助。
这是我当前的 Windows BAT 文件,它可以工作。ADV.jar 包含我的自定义类但没有主要方法。
setlocal
set r=d:\Apps\Selenium\
cd /d %~dp0
java -classpath %r%Downloaded\*;%r%MyCompany\ADV.jar; org.testng.TestNG .\testng-customsuite-adv.xml
pause
我从公共场所下载的所有 JAR 文件都进入了我的 d:\Apps\Selenium\Downloaded 文件夹。我将我的自定义 ADV.jar 文件放在 d:\Apps\Selenium\MyCompany 中以保持独立。
我使用 Export Jar 文件从 Eclipse 创建了我的 ADV.jar 文件,并忽略了有关缺少 main 方法的警告。
另外:虽然这个https://stackoverflow.com/a/16879386/424855很有趣,但我不知道如何使它工作。
这是更好的方法。
您可以创建一个 main 方法,其中包含要执行的所有测试类的列表,如下所示:
public static void main(String[] args) {
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { test_start.class });
testng.addListener(tla);
testng.run();
}
这是来自testng官方网站的参考网址。
MainOne.java
作为 Java 应用程序运行。然后右击包 -> 导出 -> Runnable Jar [Choose MainOne
as Launch Configuration] -> Finish。