【问题标题】:maven test don't run testsmaven 测试不运行测试
【发布时间】:2012-04-06 01:46:07
【问题描述】:

我的 Eclipse (m2eclipse) 中有一个 maven 项目 我想写一些简单的测试:

public class AppTest {
    @Test
    public void test() {
        fail("Not yet implemented");
    }
}

如果我在 Eclipse 中运行 Maven 测试(Run-->Run As-->Maven test),它会得到预期的输出:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running app.AppTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.076 sec <<< FAILURE!

Results :

Failed tests:   test(app.AppTest): Not yet implemented

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

但是,如果我在控制台中通过“mvn test”尝试相同的操作,则不会执行测试:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

如何通过mvn test 运行测试?

【问题讨论】:

  • 也许测试是 junit 测试 - 如果你在路径中都有,maven 默认使用 testng。
  • 我已经添加了 JUnit 和插件的依赖,我该如何更改默认值?
  • 比较 Maven 版本——来自 Eclipse 和控制台。在您的系统中安装 maven 3.0.4 并再次检查。我认为 Eclipse 插件只使用版本 3
  • 我的 m2eclipse 使用 3.0.4 版本的外部 maven 安装(就像我尝试测试一样)

标签: java maven junit m2eclipse


【解决方案1】:

确保您的测试用例位于src/test/java 目录中,而不是src/main/java 中。 surefire 插件只会运行位于src/test/java 下的测试用例。

在 Eclipse 中创建这个目录,将测试用例移到那里,然后执行 Maven > Update Project Configuration,这会将 src/test/java 添加为 Eclipse 中的源文件夹。

从命令行运行 Maven 时,它还应该显示它正在编译测试类。确保这种情况正在发生,例如

[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 7 resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 31 source files to /dummy-project/target/test-classes

【讨论】:

  • 我已经检查过了,没有变化
  • 你的测试用例在哪里?
  • 我的测试位置:应用程序包中的“src/test/java”,AppTest 类
  • 你的测试类被编译了吗?请参阅上面的示例以了解如何显示。
  • 另一个问题,这里不适用,但对于检查相同问题的其他人来说很有价值:确保测试所在的类名以 Tests 结尾(例如 MyProjectTests)。否则默认情况下不会从命令行选择测试。
【解决方案2】:

你可以试试下面的命令:

mvn clean generate-sources install

【讨论】:

    【解决方案3】:

    对于遇到相同问题但在这篇文章中没有找到答案的人,这是 Google 中的最高结果,请检查您的导入是否有 @Test 注释。

    我有import org.junit.Test;,这听起来不错,但我的测试没有运行。尝试使用import org.testng.annotations.Test; 并且它有效。

    似乎很明显,因为测试正在由 TestNG 运行...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-24
      • 2012-06-19
      • 2021-10-19
      • 2014-09-28
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多