当前位置: 首页 > 知识库问答 >
问题:

动态测试如何运行。xml使用maven mvn测试命令行?

皇甫卓君
2023-03-14

我创建了一个测试运行程序,它创建了一个动态的testng xml,这样我就可以运行带有参数的测试。所有@Test方法都在相关类中(例如LoginTest.class)。它在IDE上运行得非常完美,但在Maven(mvn测试)下,它只打印构建成功,而不运行任何测试…

POM. xml中的maven-surefire插件:

<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个答案

陈浩
2023-03-14

我刚刚试过你的项目,它是从mvn测试命令运行的。从哪里运行maven命令?只要去你的项目目录pom。xml存在并运行您的命令,它应该可以正常工作。此外,我还在runner包中添加了LoginTest类以及TestRunner类,它在IDE和命令行中运行良好。

请再次测试并让我知道。

 类似资料:
  • 问题内容: 我想从命令行运行JUnit测试用例。我怎样才能做到这一点? 问题答案: 对于JUnit 5.x,它是: 查找在简要https://stackoverflow.com/a/52373592/1431016的全部细节https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher 对于JUnit

  • 问题内容: 我正在尝试使用gradle通过以下命令运行测试,但无法正常工作 我的测试套件如下所示 尝试运行以下命令的方法有效,但更糟糕的是,它每次运行两次测试。一次,然后再次在相同名称空间的测试套件下 我可以删除测试套件并以这种方式进行操作,但是我想更好地了解这里发生了什么以及为什么我不能告诉它直接运行测试套件。 问题答案: 以下为我在本地工作。 与所使用的更高级的过滤方法相比,这实际上使用了不同

  • ./gradlew test 执行gradle测试任务后所有的测试用例都会被运行,然后会产出测试报告. 测试报告存放在址: app\/build\/reports\/debug\/index.html 通过gradle工具栏执行的效果同命令行.

  • 我编译了测试,并尝试执行以下操作来运行它们: 这引发了一个巨大的异常,开始是这样的: 但基本上说它找不到JUnitExc的类。如果我让控制台启动器查找测试,它找不到任何测试: 我不知道如何在没有IDE的情况下从命令行运行JUnit5测试。 更新: 使用 Maven 运行测试(使用 Surefire 插件)会给我同样的错误。我什至删除了所有测试,但仅导入 junit5 依赖项的测试除外,但我仍然收到

  • 类似于这个问题。然而,当使用ddt时,公认的解决方案不适用于我。 例如: 如果我在终端上运行这个,它就不起作用了

  • 我有一个用gradle构建的大型代码库。我有几个JUnit测试,在构建时运行。 罐子 问题:我如何使用jar提供测试,并允许它们像运行jar一样从命令行运行? 我在SO上找不到任何关于使用gradle分发测试的信息,所有的命令行JUnit示例都不够,因为它们需要手动输入类路径,并且依赖项的数量很大(因此使用gradle Fatjar)。