【问题标题】:How to run standalone TestNG project from jar/bat/如何从 jar/bat/ 运行独立的 TestNG 项目
【发布时间】:2013-07-13 12:01:07
【问题描述】:

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

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

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

我没有使用 ant 或 maven。

谢谢

【问题讨论】:

  • 您找到解决方案了吗?我也卡在这里了。
  • 您在使用“Eclipse”吗?可以导出为您执行测试的“启动”文件,但您仍然需要一个列出所有需要执行的类的“套件”文件。然后可以从命令行执行“启动”文件。

标签: jar testng executable-jar


【解决方案1】:

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

【讨论】:

  • 啊,右键单击包并在菜单中选择它。是否愿意提供一种更通用的解决方案,而不是仅在未指定的编辑器上工作的解决方案?或者可能将其限制为特定的编辑器和版本,例如“在此版本的 Eclipse”或“使用 IntelliJ 13”或“使用 Netbeans 8”或“在 JDeveloper 12 内部”......否则您的信息没有那么有价值。这些菜单在我当前的编辑器中不可见。也许它在很久以前就在那里,但已经移动了。或者您的菜单可能是针对其他编辑器的。
  • 我已编辑我的回复以包含 IDE 名称和版本。不过我没有通用的解决方案。
【解决方案2】:

我目前的理解是,为了从 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 包含我的自定义类,但没有 main 方法。

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 非常有趣,但我不知道如何让它发挥作用。

【讨论】:

    【解决方案3】:

    这是更好的方法。

    您可以只创建一个 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作为启动配置] -> 完成。

    【讨论】:

      猜你喜欢
      • 2011-10-23
      • 2016-12-09
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      相关资源
      最近更新 更多