【问题标题】:java.lang.Exception: No tests found matching Method using Intellij IDEAjava.lang.Exception:没有找到匹配使用 Intellij IDEA 的方法的测试
【发布时间】:2017-04-13 07:32:12
【问题描述】:

我遇到了 Intellij IDEA 2016.3 的奇怪行为。当我在运行测试时得到java.lang.Exception: No tests found matching Method foo 时,拥有一个带有方法foo 的类和一个针对该方法的JUnit 测试。在我执行mvn test 之后,它成功,然后在执行 mvn 命令后立即运行单元测试,它突然运行绿色。似乎IDEA不会自动编译。我该如何解决这个问题?

附:升级到 v. 2016.3 后未更改任何设置

【问题讨论】:

  • 查看测试的运行配置。如果您看到 Make,那么 IntelliJ 将在您更改测试时再次编译。由于这是一个 Maven 项目,我假设您的测试类位于 src/test/java 中。
  • @duffymo 你是对的,我有一个损坏的测试运行配置。删除损坏的并重新运行测试后,它工作正常。您可以将您的评论作为答案,以便我接受。
  • 阿瑟不用担心,很高兴为您提供帮助。
  • @duffymo 今天问题又出现了,即使没有测试类的运行配置,只是运行测试导致了问题
  • @duffymo 我尝试将Before launch 选项更改为Build project 而不是Build,突然一切都开始正常工作了。

标签: java maven intellij-idea junit compilation


【解决方案1】:

好吧,在对每个单元测试的运行配置“玩”了一下之后,我注意到每个运行配置在Before Launch 选项中预设了一个Build 目标(见下图):

Build 更改为Build Project 后,测试运行良好。

【讨论】:

  • 我也错过了所有测试都在运行的旧 IDEA 版本中的 Make 选项。这是一种错误还是我应该改变smth。让测试运行。我不想更改每个测试的每个运行配置的预设。
【解决方案2】:

如果您最初运行名为“foo”的测试,然后将其重命名为“fooBar”,您必须随后使用新的运行配置运行“fooBar”

如果您为“foo”使用相同的原始运行配置来运行“fooBar”,它仍然会查找名为“foo”的测试,但它没有找到(因此出现异常),因为它已重命名为“fooBar”。新的运行配置将正确查找“fooBar”测试。

我在不知不觉中犯了这个错误,因为我重命名了一个测试,然后只是单击了 IntelliJ 中的绿色运行按钮:这样做会运行最后一个运行配置,在这种情况下它具有旧的“foo”名称。

【讨论】:

  • 这种情况尤其发生在您第一次运行测试时,您选择了测试方法,而不是整个班级。
【解决方案3】:

如果您使用的是 Junit'sRobolectric's 等理论测试框架,请确保运行包含所需测试的类,而不是测试本身。由于这些框架将测试方法用作实例方法而不是静态方法,因此任何寻找正常public static 测试的测试框架都找不到任何东西。

【讨论】:

  • 我习惯于只运行测试方法,而不是整个班级。但是尝试您的解决方案导致我遇到实际错误 - 我尝试运行的方法不是公开的(我在 Eclipse 上遇到了这个问题)。
【解决方案4】:

确保你的班级上面提到的跑步者是正确的。

当我使用跑步者CucumberWithSerenity.class 时,我收到了这个奇怪的消息。当我更改为SerenityRunner.class 时,它得到了修复。

@RunWith(SerenityRunner.class)
//@RunWith(CucumberWithSerenity.class)
public class WordPressAppTest {

我正在使用 Serenity 框架进行 Web 自动化并在下面的运行器类中使用

import net.serenitybdd.cucumber.CucumberWithSerenity;
import net.serenitybdd.junit.runners.SerenityRunner;
import org.junit.runner.RunWith;

我觉得 IDEA (2017.2.6) 可以显示比这更好的错误信息

【讨论】:

    【解决方案5】:

    我在使用 Gradle (4.5+) + 新的 Build Cache 功能时遇到了同样的问题

    有时它无法找到新的测试方法并抛出异常(就像你在主题中提到的那样)

    解决方案:清理.gradlebuildout 目录,然后重试;)

    【讨论】:

    • 这是我的正确答案,我一直在使用 IntelliJ,所以它与 eclipse 无关。删除所有内容并重建工作!解决了我的 1 小时浪费问题...谢谢!
    【解决方案6】:

    删除 Intellij 的 out 目录为我解决了这个问题。

    【讨论】:

    • 固定一分钟。它仍然不知道何时重新编译我的项目。
    • 我刚刚删除了我的整个项目,然后再次克隆它。它现在正在工作......不知道为什么:/
    • 或者删除buildtarget等目录,然后重新构建。
    【解决方案7】:

    除了这里的其他答案:当您在测试方法声明之前忘记@Test 时,也会发生错误。 IntelliJ (2018.1) 仍会为您显示绿色的“播放按钮”以执行测试,但您的测试类中的公共方法将不是实际测试。

    【讨论】:

      【解决方案8】:

      也许你只是给测试方法一个错误的名字。

      我遇到了这个问题,因为我使用了“-”而不是 intelliJ 无法表示的“_”。

      【讨论】:

      • STS 是 Spring 开发的最佳工具
      【解决方案9】:

      确保您的@test 方法以及测试类是public

      【讨论】:

        【解决方案10】:

        如果没有在测试方法上方放置@Test注解,也会出现这种情况。

        【讨论】:

          【解决方案11】:

          既然你得到了你的答案并且其他人正在寻找解决方案,

          查看您的测试类是否扩展了与 JUnit 3 相关的 TestCase 抽象类。为了解决这个问题,您必须以“test”开头您的方法名称。 例如public void testFoo()

          如果 JUnit 3 不是这种情况,则您的 JUnit 4 测试方法中缺少 @Test 注释。

          注意:如果您是从 TestCase 扩展而来,并且测试方法使用 @Test 进行注释,并且您的方法名称以“test”开头,那么您可能正在将 JUnit 3 与 JUnit 混合使用4. 不要那样做。如果这些方法的名称以“test”开头,则会导致其他错误,例如带有@Ignore注释的方法将不会被忽略。

          【讨论】:

            【解决方案12】:

            在我的例子中,我从另一个类复制了一个测试并对其进行了修改,但在运行测试时它仍然指向前一个。

            Build > Clean Project 解决了问题

            【讨论】:

              【解决方案13】:

              我必须在测试方法名称之前添加测试。

              methodtest() 不起作用,但 testMethod() 起作用

              【讨论】:

              • 为我工作!谢谢~
              【解决方案14】:

              确保将@org.junit.Test 添加到您的方法之上。我忘记了它们,这为我解决了问题!

              【讨论】:

                【解决方案15】:

                您可以检查 IntelliJ 屏幕顶部的运行/调试配置。 使用“减号按钮”删除所有内容,然后再次点击“运行”绿色按钮以运行测试。

                您也可以在右侧的 maven 选项卡上重新加载项目。

                【讨论】:

                  【解决方案16】:

                  在我的 spring mvc 项目中。我通过添加解决了这个问题

                  @RunWith(SpringJUnit4ClassRunner.class)
                  

                  到我的测试班。

                  【讨论】:

                    猜你喜欢
                    • 2016-03-07
                    • 2018-05-22
                    • 2019-07-09
                    • 2014-06-17
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多