【问题标题】:Using Surefire to execute TestNG/Selenium tests in a jar使用 Surefire 在 jar 中执行 TestNG/Selenium 测试
【发布时间】:2014-08-06 13:43:14
【问题描述】:

我们的项目有一套 Selenium 测试,我们目前正在将其打包到一个 jar 中,目的是让 Jenkins 将测试作为构建步骤运行。我们将 jar 安装到客户端虚拟机的本地存储库中,该虚拟机配置为让 Selenium 指向 Jenkins 作为主机。我们遇到的麻烦是想办法让 Maven/SureFire 在我们安装的 jar 中找到 Selenium/TestNG 测试。我们有一个 pom,其中包含测试在客户端上所需的所有依赖项,包括测试本身的 jar,但是当我们运行“mvn test”时,没有找到任何测试。显然我们在这里遗漏了一些东西,有什么想法吗?谢谢。

【问题讨论】:

  • 最好创建一个包含测试列表的testng.xml 文件。 Surefire 很天真,不足以识别测试。让 TestNG 真正找到它们。

标签: java maven selenium testng surefire


【解决方案1】:

surefire 默认查找文件名,如 Test*.java 、 *Test.java 、 *TestCase.java 并执行它们。如果您的测试不遵循任何这些模式,那么您必须明确包含它们。 refer here

【讨论】:

  • 糟糕的是,TestNG 无法扫描源 .jar 文件。唔。也许有办法。
  • TestNG 扫描 jar 中的所有文件以查找 @Test 注释。 Surefire 没有;它使用不太灵活的 JUnit 方法。
【解决方案2】:

创建一个调用 testNG main 方法的 main 方法,并将您的 main 方法 args[] 传递给 testNG Main 方法。现在您的测试 jar 将具有触发您想要的测试用例的主要方法。您可以将与 TestNG 相同的参数传递给您的 jar 文件,例如 testng.xml 文件或 -testClass classapath 等...参见下面的示例。

public static void main(String args[])
{
    org.testng.TestNG.main(arg);
}

现在您只需要创建一个测试类的 xml 文件,并在 jenkins 中使用 windows 批处理命令在远程机器上使用所需的 testNG 参数调用您的 jar 文件。

【讨论】:

    猜你喜欢
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 2022-01-23
    • 2010-11-16
    相关资源
    最近更新 更多