测试运行'JUnit 4'没有测试结果

use*_*070 101 java eclipse junit junit4

我的Java测试在Eclipse中运行良好.但现在,当我从运行菜单重新启动测试时,我收到以下消息:

No tests found with test runner 'JUnit 4'
Run Code Online (Sandbox Code Playgroud)

.classpath文件中我有所有jar文件,最后有:

<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
    <classpathentry kind="output" path="bin"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)

如何解决此错误并让测试再次运行?

Ger*_*mán 152

这恰好发生在我身上.重建或重新启动Eclipse没有帮助.

我通过重命名其中一个测试方法以"test ..."(JUnit3样式)开始解决它,然后找到所有测试.我将它重新命名为以前的版本,它仍然有效.

  • 我有像`testQuotes`这样的方法以及其他不以测试开始的方法,但仍然没有找到测试错误 (6认同)
  • 说真的,即使用@Test注释测试,测试函数名称仍然需要以"test"为前缀? (5认同)
  • 您也可以将2015和Eclipse Luna添加到该列表中.实际上我的许多@Test方法仍然以前缀"test"开头.我删除了一个测试的前缀,保存,然后找到所有测试.然后我把它加回来,继续找到所有的测试.它似乎更多的是改变方法(文件?),以便Eclipse重新发现一切. (4认同)
  • 即使在2012年,这也是正确答案,谢谢! (3认同)
  • Android Studio 2.1.1,2016年5月,仍然有效.我想知道这个答案是否会在宇宙结束之前发挥作用. (2认同)

Jam*_*esG 42

当我们得到这些错误时,似乎只是混淆了Eclipse.重启Eclipse,刷新项目,清理它,让Eclipse重建它,然后再试一次.大部分时间都像魅力一样.

  • 这真的让我想要寻找一个新的IDE.这对我有用. (11认同)
  • 我遇到了这个问题,我关闭了源文件,在那里我定义了我的测试类,在导航器中双击该文件,然后就可以了.因此关闭并重新打开文件工作,而无需重新启动Eclipse. (3认同)
  • 关闭并重新打开该项目为我修复了它! (2认同)

小智 34

在"test"目录的上下文菜单中,选择"Build path" - >"Use as a source folder".Eclipse应该将您的unitTests.java文件视为源文件.警告'未找到JUnit测试',因为'build'目录中没有unitTests.class文件


小智 31

检查您的测试类是否扩展了"TestCase".如果是这样,删除该条款.您的类不需要从"TestCase"类扩展.这是我见过的大多数情况.

public class MyTestCase extends TestCase{
  @Test
  public void checkSomething() {
    //...
  }
}
//Result> AssertionFailedError: No test Found in MyTestCase
Run Code Online (Sandbox Code Playgroud)

以下TestCase应该没问题.

public class MyTestCase {
  @Test
  public void checkSomething() {
    //...
  }
}
//Works fine
Run Code Online (Sandbox Code Playgroud)


too*_*asr 27

我遇到了同样的问题,我把它调试到了网络和junit内部的坏例子.基本上不要让你的类扩展TestCase,如Junit 4.x中的一些示例所示.使用一些命名约定Test或者如果你想要一个注释,你可以使用@RunWith(JUnit4.class).

如果需要访问assert方法,请扩展Assert或使用静态导入.

如果你的类扩展了TestCase,那么即使你使用Junit 4 Runner,它也将运行为3.这是因为在初始化代码中有检测:

请参阅JUnit3Builder和行:

boolean isPre4Test(Class<?> testClass) {
    return junit.framework.TestCase.class.isAssignableFrom(testClass);
}
Run Code Online (Sandbox Code Playgroud)

返回true,不会尝试junit4兼容性测试.

  • 这解决了我的问题.如果您正在查看有关如何首先使用Junit的较旧示例,它们将导致您误入歧途. (2认同)

小智 6

我已经找到答案了:

当我从 eclipse 独立执行测试时出现此错误(右键单击该方法并选择作为 junit 测试运行),

当我将完整的类作为 junit 测试执行时,测试使用参数正确执行。


小智 5

尝试添加

@Test上面的测试方法就像这样

@Test
public void testParse()
{

}
Run Code Online (Sandbox Code Playgroud)


Mat*_*ise 5

我会提出另一个可能的解决方案:我既不能从编辑器窗口也不能从Package Explorer运行测试类,但是右键单击Outline视图中的类名称并选择Run As JUnit。测试确实奏效了。。。


b.r*_*oth 0

你的Eclipse项目是基于maven的吗?如果是这样,您可能需要更新 m2eclipse 版本。

简单说明一下:我在 Eclipse 中有一个基于 Maven 的项目,最初是使用 Eclipse 中的“新 Maven 项目”向导生成的。我使用 JUnit 4.5 进行单元测试,并且可以很高兴地使用 maven 从命令行运行测试,并使用 run as JUnit test 从 Eclipse 运行单独的测试......但是,当我尝试运行所有测试时在项目中,通过在项目根节点上调用 run as JUnit test...,Eclipse 抱怨“没有使用测试运行程序 junit 4 找到测试”。通过从 m2eclipse 更新站点将 m2eclipse 升级到最新的稳定开发版本来解决(具体来说,我在 Eclipse Galileo 中从版本 0.9.8.200905041414 升级到版本 0.9.9.200907201116)。

从这里: http: //nuin.blogspot.com/2009/07/m2eclipse-and-junit4-no-tests-found.html