java.lang.Exception:没有找到匹配使用Intellij IDEA的方法的测试

时间:2016-11-29 10:33:54

标签: java maven intellij-idea junit compilation

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

P.S。升级到v.2016.3

后,没有更改任何设置

15 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:7)

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

Build更改为Build Project后,测试运行正常。

答案 2 :(得分:4)

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

如果你使用相同的原始运行配置" foo"要运行" fooBar",它仍然会寻找一个名为" foo"它没有找到(因此是例外),因为它被重命名为" fooBar"。新的运行配置将正确查找" fooBar"测试

我在不知不觉中犯了这个错误,因为我重命名了一个测试,但之后只是点击了IntelliJ中的绿色运行按钮:执行该操作运行最后一次运行配置,在这种情况下,它具有旧的" foo"名。

答案 3 :(得分:4)

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

答案 4 :(得分:2)

除了此处的其他答案:当您在测试方法声明之前忘记@Test时,也会发生错误。 IntelliJ(2018.1)仍会向您显示绿色的“ Play-Button”以执行测试,但是Test-Class中的公共方法将不是实际的测试。

答案 5 :(得分:2)

自从您得到答案以及其他正在寻找解决方案的人以来,

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

如果不是JUnit 3,则JUnit 4测试方法中缺少@Test注释。

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

答案 6 :(得分:1)

也许您只是为测试方法输入了错误的名称。

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

答案 7 :(得分:1)

如果未在测试方法上方放置@Test注释,也会发生这种情况。

答案 8 :(得分:0)

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

当我使用跑步者SerenityRunner.class时,我收到了这个奇怪的消息。当我改为@RunWith(SerenityRunner.class) //@RunWith(CucumberWithSerenity.class) public class WordPressAppTest { 时,它已得到修复。

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

我正在使用Serenity框架进行网络自动化,并在跑步者类

下使用
$('.tt').each(function(i, obj) {
    var value = $( obj ).val();

    console.log( value );
});

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

答案 9 :(得分:0)

检查以确保您的考试是公开的

答案 10 :(得分:0)

就我而言,我从另一个类复制了一个测试并进行了修改,但是在运行测试时,它仍然指向上一个。

构建>清理项目解决了问题

答案 11 :(得分:0)

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

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

答案 12 :(得分:0)

确保在您的方法之上添加了 @org.junit.Test。我忘记了它们,这为我修好了!

答案 13 :(得分:0)

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

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

computer InteliJ screen

答案 14 :(得分:0)

不幸的是,某些版本的 Junit 必须以 test 开头测试方法名称。 否则,它将无法工作。

测试MyTestingCase()

@Test
public void testMyTestingCase() {
}