未找到测试运行程序“JUnit 4”的测试

Posted

技术标签:

【中文标题】未找到测试运行程序“JUnit 4”的测试【英文标题】:No tests found with test runner 'JUnit 4' 【发布时间】:2011-01-20 22:17:31 【问题描述】:

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

No tests found with test runner 'JUnit 4'

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

<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

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

【问题讨论】:

你能发布你的测试内容(或者至少是类声明)。你也写了“最后有:”,没有别的。 检查这个.. 它应该帮助***.com/questions/22469480/junit-no-tests-found 对于 junit 5 见here 【参考方案1】:

使用 ScalaIDE (3.0.4-2.11-20140723-2253-Typesafe) 我在使用 Right Click Scala Test Class-&gt; Run As -&gt; Scala Junit Test 上下文菜单时遇到了类似的问题。

我尝试编辑类(但不是因为编译失败)、清理、关闭项目、关闭 Eclipse。这些都无法恢复以前运行良好的类的上下文菜单。测试类不使用@Test 注释,而是使用ScalaTest 代码在类顶部使用@RunWith(classOf[JUnitRunner]) 注释。

当我尝试直接从运行配置启动编辑器中选择 Scala Junit Test 时,我收到了来自问题的对话框。 Footix29 的回答对我来说是关键。

我注意到,即使我已经清理了几次项目,我在 /bin 目录中的类也有一段时间没有真正重建。

这是我返回上下文菜单的方法,并且能够再次运行 Scala Junit Tests:

manually 通过 Explorer 删除 /bin/&lt;package dir&gt;* 来清理类 Project -&gt; Cleaned 项目以及完整的重建

我怀疑类编辑通常能够清除 Eclipse 的某些已保存状态并使其重新运行。就我而言,我尝试过的所有以前的工作课程都失败了,所以manual clean 步骤正是我需要的锤子。但是,影响 Eclipse 的类路径/构建状态概念的其他技巧也应该起作用。

此外,我认为这种行为的部分原因是尝试通过重命名来重构 Scala 类(Scala Eclipse IDE 对此很讨厌),其中初始文件更改后的所有清理都是手动的。没有构建错误,但也没有我预期的警告,这意味着 Eclipse 的构建状态信息中肯定有什么问题。

【讨论】:

【参考方案2】:

右击项目->构建依赖项->删除已从构建路径中排除的那些->点击确定

右击项目 -> Maven -> 更新项目。

你应该很高兴..

【讨论】:

【参考方案3】:

您可以通过以下方式解决此问题:

右键单击名为“测试”的文件夹 > 构建路径 > 用作源 文件夹 或者您可以将类路径设置为:<classpathentry kind="src" path="src/test/java"/>。您将 "src/test/java" 替换为您的测试包

这个问题是因为 junit 无法识别你的源代码 :D

【讨论】:

【参考方案4】:

我的问题是使用 **

测试

** 包 org.testng.Assert;

您可以将项目库 (Maven) 中的它替换为 JUnit,然后需要重构项目。 或者添加TestNG Eclipse 插件

http://testng.org/doc/eclipse.html

【讨论】:

【参考方案5】:

当我的 Java 类名与 Test 类名相似时,我遇到了这个问题。刚刚更新了测试类的名称,通过使用密钥“测试”对其进行修复,它开始工作

之前: Java 类:ACMEController 测试类:ACMEController

之后: Java 类:ACMEController 测试类:ACMEControllerTest

【讨论】:

【参考方案6】:

就我而言,问题在于泛型参数:

public class TestClass<T extends Serializable> 

删除

并且该选项再次可用。

我正在使用 Junit4

【讨论】:

【参考方案7】:

您可以通过将测试类重命名为以 Test 结尾的名称来解决此问题,例如这与那测试

【讨论】:

【参考方案8】:

检查更新!考虑到已经提出了多少变通方法,Eclipse 无疑完全意识到了这个问题。显然有一些系统性的东西……一些无法解释或任何连贯性的东西。如果 Eclipse 能让社区知道问题是什么以及如何解决,那将会很有用。

我最近的另一个发现是删除任何没有文件或所有文件都被排除在外的源目录。

【讨论】:

【参考方案9】:

如果您确定它以前可以正常工作,但现在不能正常工作,那么 Java 索引很可能已损坏。在首选项中,搜索“java index”;它在“Java”中,然后有一个“重建索引”按钮(或使用 Ctrl+3,“查找操作”,快速搜索“重建 Java 索引”)。选择后,下次尝试运行 JUnit 测试时,您应该会看到 Eclipse 正在重建 Java 索引,并且 JUnit 测试应该现在开始。

【讨论】:

【参考方案10】:

我遇到了这个问题,因为我有一个不是静态的 @BeforeClass。

由于某种原因,错误没有通过我的正常 junit 运行配置暴露出来。

【讨论】:

【参考方案11】:

我尝试了上面所有的答案。

就我而言,我的项目同时具有 junit4 和 junit5 依赖项。我正在尝试使用 junit4,所以在确保我使用了正确的 junit4 导入之后它仍然无法正常工作。

我终于找到了问题所在。调试配置中使用的 eclipse JUnit 运行器设置为 JUnit5。我将其更改为 JUnit4,现在可以找到并执行测试。

【讨论】:

【参考方案12】:

这个异常有两个原因:

    源代码尚未编译。 或者相反,源代码已经编译但JUnit找不到。

原因一,它没有腿可站。因为就像许多人所说的那样:“旧”方法非常有效。只有新增的方法无法识别。 然后第二个原因变成了唯一的解释:JUnit 找不到新编译的类。 考虑到这一点,我这样做了:右键单击项目 -> Java 构建路径 -> 编辑源项: project_name/src/test/java 的 Output 文件夹,将 Output 文件夹更改为“特定输出文件夹(相对于 project_name 的路径)。提供此值:目标/测试类。 请注意:这是 Maven 定义的默认测试源代码的输出文件夹。它已被 M2E(或我)覆盖。这就是 JUnit 找不到它的原因。 所以我的猜测是许多遇到这个可爱异常的人很可能正在处理一个由 Maven 管理的 Web 项目。我对吗?!这也促成了我的结论,即应该排除一个原因 - 可以找到“旧”方法是因为它们在 Tomcat (重新)启动时已自动编译。可能进入了“错误”的路径,但 JUnit 还是找到了。

在我想通之前。我按照建议尝试了很多事情:更新到最新的 JUnit4、在构建路径和用作源文件夹之间来回切换、大写测试与测试等。在我明确确定测试源的输出位置之前,什么都没有发生。 有了这些解释,我的第二个原因应该重新表述为:新代码没有及时编译到正确的路径! 祝你好运。

【讨论】:

【参考方案13】:

我在实现@RunWith(Cucumber.class) 时也遇到了这个问题。 由于此注释位于公共类中,因此 Eclipse 显示此“No tests found with test runner not found”错误。

一旦我在运行器类之前调用​​/放置了测试运行器注释,测试就会很好地显示出来。

读者必须确定他们正在使用哪个 Junit Test Runner。可以使用@RunWith(JUnit4.class) 检查是在 runner.class 括号 的外部还是内部。如果在里面,请放在外面。

【讨论】:

【参考方案14】:

如果您尝试设置 junit 5 添加@RunWith(JUnitPlatform.class)

import org.junit.platform.runner.JUnitPlatform; 以便eclipse 可以将junit 5 测试类识别为测试类

【讨论】:

以上是关于未找到测试运行程序“JUnit 4”的测试的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio - Junit 4 - 在所有测试之前运行代码

Unity + Rider - 运行测试错误:“未找到此测试的程序集”

单元测试利器 JUnit 4

在 Junit 4 中运行所有测试

排毒测试:未找到 React 本机 android 应用程序二进制文件

MSTest Visual Studio 2015:未找到测试容器直接或间接引用的程序集或模块“xxxxxxx”