【问题标题】:Maven: Running all tests from multiple classes + one test from another classMaven:运行来自多个类的所有测试+来自另一个类的一个测试
【发布时间】:2014-01-26 06:47:40
【问题描述】:

我有一堆包含多个测试的类。是否可以运行 3 个类的所有测试,然后只运行另一个类的一两个测试?

我认为这样的事情会起作用,但我无法让它运行:

mvn -Dtest=WTest,XTest,YTest,ZTest#thisTest test

我想运行 W、X 和 YTest 类中的所有测试,以及 ZTest 类中名为 thisTest 的测试。

【问题讨论】:

  • 当你运行上面的时候会发生什么?是否所有测试都在ZTest 中执行,而不仅仅是thisTest
  • 不,我收到一个字符串 indexOutOFBounds 消息。如果我删除 ZTest#thisTest 然后 W,X,Y 运行。如果我删除 W,X,Y 然后 thisTest 从 Z 运行。这是我得到的错误:java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1904) at org.apache.maven.surefire.junit4.JUnit4Provider.getMethod(JUnit4Provider.java:287) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:147) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
  • OK - 您正在运行什么版本的 Surefire(可能在 pom.xml 中明确指定,或者您可能需要检查控制台输出)?
  • 我使用的是 2.16 版

标签: java maven selenium junit automation


【解决方案1】:

我不确定这是否真的受支持。花了半个小时左右查看JUnit4Provider 的源代码后,似乎surefire 将在“整个类模式”(当您指定测试类的名称时)或“单个方法模式”(当您指定测试类中方法的名称),但不能同时组合。

但是,我确实找到了解决方法。你应该可以这样做:

mvn -Dtest=xxx.xxx.WTest#*Test,xxx.xxx.xxx.XTest#*Test,xxx.xxx.xxx.YTest#*Test,xxx.xxx.xxx.ZTest#thisTest test

所以本质上,您使用*Test 通配符在“单独方法模式”下运行测试,以指定WTestXTestYTest 中的所有测试方法 - 仅在thisTest 中运行ZTest。这显然假设您的测试类中的方法名称以 Test 结尾

请注意,为此我必须使用完全限定的类名(这是 xxx.xxx.xxx 应该显示的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2018-07-05
    相关资源
    最近更新 更多