如何使用 maven mvn test 命令行运行动态 testng.xml?

Posted

技术标签:

【中文标题】如何使用 maven mvn test 命令行运行动态 testng.xml?【英文标题】:How to run dynamic testng.xml using maven mvn test command line? 【发布时间】:2020-03-16 01:09:45 【问题描述】:

我创建了一个创建动态 testng xml 的测试运行器,因此我可以运行带有参数的测试套装。 所有@Test 方法都在相关类中(例如 LoginTest.class)。 它可以从 IDE 完美运行,但使用 Maven (mvn test) 它只会打印 BUILD SUCCESS 但不运行任何测试...

POM.xml 中的 maven-surefire-plugin:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>3.0.0-M3</version>
  <configuration>
<environmentVariables>
  <suite>LoginTest</suite>
</environmentVariables>
     <includes>
        <include>src/test/java/runner/TestRunner.java</include>
     </includes>
  </configuration>
</plugin>

我的 TestRunner 类:

public class TestRunner 

   public static void main(String[] args) 
       XmlSuite suite = new XmlSuite();
       suite.setName("D-Web");
       suite.setThreadCount(1);
       suite.setVerbose(1);
       //suite.setParallel("tests");
       suite.addListener("com.app.listeners.ReportListeners");

       XmlTest test = new XmlTest(suite);
       test.setName("Tests");
       test.setPreserveOrder(true);

       XmlClass testClass = getTestClass();

       List<XmlClass> classes = new ArrayList<>();
       classes.add(testClass);
       test.setXmlClasses(classes);

       TestNG testng = new TestNG();
       List<XmlSuite> suites = new ArrayList<>();
       suites.add(suite);

       testng.setXmlSuites(suites);
       testng.run();
   

   public static XmlClass getTestClass() 
       switch (System.getenv("suite")) 
           case "LoginTest":
           default:
               return new XmlClass(LoginTest.class);
           case "PurchaseFunnelTest":
               return new XmlClass(PurchaseFunnelTest.class);
           case "QuestionnaireTests":
               return new XmlClass(QuestionnaireTest.class);
       
   

我的 LoginTest 类:

public class LoginTest 

   @Test
   public void test1() 
            System.out.println("Test 1 is running...");
        

【问题讨论】:

【参考方案1】:

我刚刚尝试了您的项目,它正在从 mvn test 命令运行。 从哪里运行 maven 命令? 只需转到 pom.xml 所在的项目目录并运行您的命令,它应该可以正常工作。 此外,我已将您的 LoginTest 类与您的 TestRunner 类一起添加到 runner 包中,它可以在 IDE 和命令行中正常工作。

请再次测试并告诉我。

【讨论】:

您好,测试未运行。我从 pom.xmi 所在的项目目录运行它。它只是打印 BUILD SUCCESS: [INFO] BUILD SUCCESS [INFO] ------------------------------------ ------------------------------------------------ [INFO] 总时间:1.081 s [INFO] 完成时间: 2019-11-24T12:08:53+02:00 [信息] ---------------------------------- --------------------------------------

以上是关于如何使用 maven mvn test 命令行运行动态 testng.xml?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Microsoft Powershell 中使用“mvn -D”参数运行 Maven,但可以在命令提示符下运行

如何使用 mvn -D 通过命令行在 Maven 中设置(多个)属性?

maven编译项目自动忽略test,如何不让他忽略啊?我用的命令是mvn test

执行命令时出错:mvn test。原因:退出状态 1 - AWS

mvn test 指定suit

mvn test 指定suit