如何从jar / bat /运行独立的TestNG项目

时间:2013-07-15 14:59:46

标签: jar testng executable-jar

我有一个TestNG项目。没有任何主类,目前它的运行方式类似于“Run As TestNG”。

我想将它导出为runnable jar或jar,这样任何人都可以从命令行命中命令,测试用例开始运行。

有人可以帮我解决这个问题吗?或建议任何其他方式以可运行的形式提供代码...

我没有使用蚂蚁或专家。

由于

3 个答案:

答案 0 :(得分:5)

我似乎在谷歌搜索后找到了解决方案。这在Eclipse(Juno)中运行良好。

说,你有一个名为'Tests.java'的TestNG文件。正如你正确指出的那样,没有一个主类方法。 因此,我们必须在同一个包下创建一个新的Java类文件。我们将其命名为'MainOne.java'。这将有一个主方法类。

以下是您需要的代码:

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 [选择'MainOne'作为启动配置] - >完成。

答案 1 :(得分:1)

我目前的理解是,为了从TestNG的并行性能中受益,当从命令行而不是从Eclipse IDE内部运行Java类时,应该在org.testng的jar文件中使用静态main方法。

然后问题就变成了classpath,它定义了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文件,并忽略了有关缺少主方法的警告。

除此之外:虽然这个https://stackoverflow.com/a/16879386/424855非常有趣,但我无法弄清楚如何做到这一点。

答案 2 :(得分: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网站上的参考URL

MainOne.java作为Java应用程序运行。然后右键单击包 - >出口 - > Runnable Jar [选择MainOne作为启动配置] - >完成。