尽管指定了单个测试,Maven 仍会在课堂上运行所有测试

javajavajava

我正在尝试在测试类中运行单个测试,但该类中的所有测试都会运行。

我是这样运行的

mvn clean test -Dtest=TestClass#testMethod

我已经尝试过

mvn clean test -Dtest="TestClass#testMethod"

mvn clean test "-Dtest=TestClass#testMethod"

但似乎没有任何效果。TestClass 中的所有测试都运行...

我在这里想念什么?

测试路径:/development/src/test/java/com/company/project/TestClass.java

测试类.java

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestClass {

  @Test
  public void testMethod1() throws Exception {
    System.out.println("running1");
  }

  @Test
  public void testMethod2() throws Exception {
    System.out.println("running2");
  }
}

来自的输出 mvn -Dtest=TestClass#testMethod1 clean test

[INFO] 
[INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @ lazarus ---

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestClass
SLF4J: Class path contains multiple SLF4J bindings.

..

running1
running2
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.536 sec - in TestClass
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 50.452 s
[INFO] Finished at: 2017-03-01T13:42:51-05:00
[INFO] Final Memory: 41M/1781M
[INFO] ------------------------------------------------------------------------

编辑 2:电源模拟依赖导致问题?

    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-mockito-release-full</artifactId>
        <version>1.6.4</version>
        <classifier>full</classifier>
        <scope>test</scope>
    </dependency>
图纳基

这是一个棘手的错误。powermock-mockito-release-full依赖带来在classpath TestNG的,和你想运行使用JUnit测试,因为测试方法是使用JUnit注解org.junit.Test注释。这就是故障的原因。

当您没有指定使用哪个提供程序来运行测试时,Surefire 插件会尝试聪明地为您检测它。目的是如果您依赖于TestNG,它将自动选择其TestNG提供程序来运行您的测试。相反,如果您依赖 JUnit,它将使用其 JUnit 提供程序。这甚至取决于 TestNG 或 JUnit 的版本这对于简化配置非常有用,但是当两者都在类路径上时......未指定会发生什么。事实证明,Surefire 2.19.1 将首先选择 TestNG(参见自动检测提供者的源代码,并且TestNG 在知名提供者列表中的任何 JUnit 特定提供者之前指定)。您可以检查是否是在调试模式下查看日志的情况(使用-X);开始测试时,你会看到

Running com.company.project.TestClass
Configuring TestNG with: TestNG60Configurator

证明正在使用TestNG提供程序。

这里会有几个解决方案。首先,在测试类路径上同时使用 TestNG 和 JUnit 可能不是您想要的,除非您明确希望在测试中使用这两个框架。因此,最简单的解决方案是将 TestNG 完全排除为 的传递依赖项powermock-mockito-release-full,这样它就不会出现在测试类路径中,并且确实添加

<exclusions>
  <exclusion>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
  </exclusion>
</exclusions>

解决了这个问题,并且只有 1 个测试在正确的-Dtest=TestClass#testMethod1调用下运行

也许更好的第二个解决方案是消除对它的依赖,powermock-mockito-release-full它会在测试类路径带来许多您很可能不想要的其他东西。值得注意的是,它甚至带来了源 JAR!如果您只依赖powermock-module-junit4,则问题也已解决,而不会弄乱您的类路径。您可以自己添加对 Mockito 或其他您需要的特定组件的依赖。

第三种解决方案是强制使用 JUnit 47 提供程序这将确保测试使用 JUnit 而不是 TestNG 运行,即使两者都在测试类路径中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

phpunit测试警告没有在课堂上找到测试

来自分类Dev

是否有可能这是在课堂上测试创建模拟服务?

来自分类Dev

如何从Maven在Scalatest中运行单个测试

来自分类Dev

课堂上的玩笑测试 Fat Arrow 错过了这个

来自分类Dev

尽管验证步骤正在工作,但 Maven 测试步骤失败

来自分类Dev

如何指定要由play框架的“仅测试”命令运行的单个测试

来自分类Dev

如何指定要由play框架的“仅测试”命令运行的单个测试

来自分类Dev

运行单个集成测试/单个测试类

来自分类Dev

在JUnit测试中使用设置器,而无需在课堂上使用设置器

来自分类Dev

使用Spock和Maven在单个测试类中运行特定的测试

来自分类Dev

在Django 1.6之后运行所有测试

来自分类Dev

在所有测试之前运行命令

来自分类Dev

pyresttest在目录中运行所有测试

来自分类Dev

对所有DerivedClass的BaseClass运行测试

来自分类Dev

使用Quickbuild运行所有测试

来自分类Dev

pyresttest在目录中运行所有测试

来自分类Dev

maven-surefire-plugin 运行单一方法,但在课堂上失败

来自分类Dev

使用“断言”从一个函数运行python中的所有测试文件,而不会在测试失败时退出“ for循环”

来自分类Dev

在所有测试之前运行测试设置

来自分类Dev

摩卡不在测试目录中运行所有测试

来自分类Dev

在测试用例中运行所有硒测试

来自分类Dev

在所有测试之前运行测试设置

来自分类Dev

鼻子测试 - 在子目录中运行所有测试

来自分类Dev

尽管没有测试,Travis CI运行示例

来自分类Dev

在Eclipse的测试套件中运行单个测试

来自分类Dev

从测试类运行单个集成测试

来自分类Dev

Maven未运行测试

来自分类Dev

Maven未运行测试

来自分类Dev

Maven没有运行Scala测试

Related 相关文章

  1. 1

    phpunit测试警告没有在课堂上找到测试

  2. 2

    是否有可能这是在课堂上测试创建模拟服务?

  3. 3

    如何从Maven在Scalatest中运行单个测试

  4. 4

    课堂上的玩笑测试 Fat Arrow 错过了这个

  5. 5

    尽管验证步骤正在工作,但 Maven 测试步骤失败

  6. 6

    如何指定要由play框架的“仅测试”命令运行的单个测试

  7. 7

    如何指定要由play框架的“仅测试”命令运行的单个测试

  8. 8

    运行单个集成测试/单个测试类

  9. 9

    在JUnit测试中使用设置器,而无需在课堂上使用设置器

  10. 10

    使用Spock和Maven在单个测试类中运行特定的测试

  11. 11

    在Django 1.6之后运行所有测试

  12. 12

    在所有测试之前运行命令

  13. 13

    pyresttest在目录中运行所有测试

  14. 14

    对所有DerivedClass的BaseClass运行测试

  15. 15

    使用Quickbuild运行所有测试

  16. 16

    pyresttest在目录中运行所有测试

  17. 17

    maven-surefire-plugin 运行单一方法,但在课堂上失败

  18. 18

    使用“断言”从一个函数运行python中的所有测试文件,而不会在测试失败时退出“ for循环”

  19. 19

    在所有测试之前运行测试设置

  20. 20

    摩卡不在测试目录中运行所有测试

  21. 21

    在测试用例中运行所有硒测试

  22. 22

    在所有测试之前运行测试设置

  23. 23

    鼻子测试 - 在子目录中运行所有测试

  24. 24

    尽管没有测试,Travis CI运行示例

  25. 25

    在Eclipse的测试套件中运行单个测试

  26. 26

    从测试类运行单个集成测试

  27. 27

    Maven未运行测试

  28. 28

    Maven未运行测试

  29. 29

    Maven没有运行Scala测试

热门标签

归档