9

我有一个 TestNG 项目。没有任何主类,目前它像“Run As TestNG”一样运行。

我想将它导出为可运行的 jar 或 jar,以便任何人都可以从命令行点击命令并开始运行测试用例。

任何人都可以帮助我吗?或建议任何其他方式以可运行的形式交付代码......

我没有使用蚂蚁或 Maven。

谢谢

4

3 回答 3

5

经过一番谷歌搜索后,我似乎找到了解决方案。这在 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。

于 2013-07-26T06:32:51.337 回答
1

我目前的理解是,为了从 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很有趣,但我不知道如何使它工作。

于 2013-08-06T03:45:12.817 回答
0

这是更好的方法。

您可以创建一个 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 MainOneas Launch Configuration] -> Finish。

于 2017-03-08T07:37:50.033 回答