【问题标题】:Maven test command founds more test than test folder containsMaven 测试命令发现的测试比测试文件夹包含的更多
【发布时间】:2021-08-31 09:11:09
【问题描述】:

我正在检查open source project,我注意到mvn test 命令发现的测试比测试文件夹包含的要多。

测试中有错误和失败。不知道是不是和问题有关。

mvn test 命令:

Tests run: 1279, Failures: 2, Errors: 918, Skipped: 2

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  18.646 s
[INFO] Finished at: 2021-08-31T12:00:30+03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-test) on project aliyun-sdk-oss: There are test failures.

如果我在 intellij ide 中选择测试文件夹运行测试:

所以 mvn test 运行 1279 个测试,但 intellij 只能运行 856 个测试。这是什么原因?

【问题讨论】:

  • 您有多确定 IntelliJ 确实在挑选您的所有测试?检查你的 pom,如果在 test dir 中有安全配置或默认情况下 intelliJ 没有选择的东西。

标签: java maven unit-testing intellij-idea integration-testing


【解决方案1】:

首先,如果测试用例多于测试类,这是常见的预期行为。 Maven 统计测试用例。

public class FooTest {

    @Test
    public void first() {
        // some test and assertion
    }

    @Test
    public void second() {
        // some test and assertion
    }
}

这种情况下只有一个测试类和两个测试用例,所以Maven会显示

Tests run: 2, ......

然后看看 IntelliJ IDEA 的输出。每行开头有四种不同的歌声。

  • 绿色粗表示测试成功
  • 黄色十字表示测试已运行,但某些断言失败
  • 灰色表示跳过测试(例如在操作系统上禁用)
  • 红色感叹号表示测试未运行。

重点是最后一个。这意味着某些先决条件不可用或在初始化期间发生了意外情况。例如,如果 before 方法抛出异常,则该测试类(以及该类中的所有测试用例)将不会运行。

可能 IDEA 没有选择所有配置选项,但命令行选择了。

运行选项卡上列出的所有失败测试,​​只需向下滚动一点。

其中一个失败是:


com.aliyun.oss.common.auth.InvalidCredentialsException: Access key id should not be null or empty.

    at com.aliyun.oss.common.auth.DefaultCredentials.<init>(DefaultCredentials.java:37)
    at com.aliyun.oss.common.auth.DefaultCredentials.<init>(DefaultCredentials.java:32)
    at com.aliyun.oss.integrationtests.TestBase.getOSSClient(TestBase.java:107)
    at com.aliyun.oss.integrationtests.TestBase.deleteBucket(TestBase.java:122)
    at com.aliyun.oss.integrationtests.TestBase.tearDown(TestBase.java:98)
    at com.aliyun.oss.integrationtests.ListVersionsTest.tearDown(ListVersionsTest.java:78)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
    at org.junit.internal.runners.statements.RunAfters.invokeMethod(RunAfters.java:46)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    at org.junit.runners.Suite.runChild(Suite.java:128)
    at org.junit.runners.Suite.runChild(Suite.java:27)
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)

【讨论】:

    猜你喜欢
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2011-07-26
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多