我遇到了Intellij IDEA 2016.3的奇怪行为。在运行测试时获得foo
时,为方法java.lang.Exception: No tests found matching Method foo
创建一个类和JUnit测试。在我mvn test
之后它成功然后在执行mvn命令后立即运行单元测试它突然变为绿色。似乎IDEA不会自动编译。我该如何解决这个问题?
P.S。升级到v.2016.3
后,没有更改任何设置答案 0 :(得分:15)
如果你正在使用像Junit's或Robolectric'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)
答案 14 :(得分:0)
不幸的是,某些版本的 Junit 必须以 test 开头测试方法名称。 否则,它将无法工作。
测试MyTestingCase()
@Test
public void testMyTestingCase() {
}