Maven 测试命令发现的测试比测试文件夹包含的更多

Maven test command founds more test than test folder contains

我正在检查 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 运行s 1279 测试但是 intellij 可以 运行 只有 856 测试。这是什么原因?

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

public class FooTest {

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

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

本例只有一个测试class和两个测试用例,所以Maven会显示

Tests run: 2, ......

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

  • 绿色粗表示测试成功
  • 黄色叉号表示测试 运行 但某些断言失败
  • 灰色 sing 表示测试被跳过(例如在 OS 上禁用)
  • 红色感叹号表示未通过测试运行。

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

可能 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.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.evaluate(ParentRunner.java:306)
    at org.junit.runners.BlockJUnit4ClassRunner.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.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access0(ParentRunner.java:66)
    at org.junit.runners.ParentRunner.evaluate(ParentRunner.java:293)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner.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.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access0(ParentRunner.java:66)
    at org.junit.runners.ParentRunner.evaluate(ParentRunner.java:293)
    at org.junit.runners.ParentRunner.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)