JUnit无法在Eclipse中找到测试

4
我在Eclipse 3.5中使用JUnit 4测试时遇到了一个奇怪的问题,一直无法解决 - 欢迎任何提示!
最初:我有一个测试套件正常工作,其中包含100多个使用JUnit 4注释配置的测试。通常我通过右键单击我的源文件夹并选择“Run as JUnit test”来运行这些测试。一切都完美地运行。
现在:当我尝试运行测试消息时,我只收到一个错误“没有使用测试运行程序'JUnit 4'找到测试”。
有什么想法发生了什么?我无法弄清楚是什么改变导致了这个失败。
我的猜测是这是基于构建路径或类路径的某些配置问题?

附加信息:我正在使用以下插件:EGit,Subversion客户端(Subclipse),Clojure的Counterclockwise,ASM框架,Findbugs,Metrics插件。 - mikera
额外信息:似乎JUnit本身没有问题,因为在其他项目中测试仍然正常运行。真的似乎与项目配置有关,但我无法确定可能缺少哪些依赖项... - mikera
5个回答

4

我也遇到过这个问题,执行 "项目 -> 清理" 并像往常一样运行单元测试即可解决!


2
我以不同的方式解决了这个问题。 这些解决方案都对我无效。 我的项目是一个Google Web App项目,一个Maven项目和一个JREbel项目......因此其中任何一个都可能会影响我的设置。
我还发现我无法使用Run As-> Java Application运行任何带有main()方法的类。 这导致了ClassNotFoundException。
我的解决方案是创建一个新的Web应用程序项目,复制所有源代码并重新设置它。 现在Java应用程序和JUnit测试都按预期工作。

1

这个问题的最有趣的答案。

将测试名称更改为以“test”开头。

例如,

@Test public void checkForTwoStringTest(){....}

更改为

@Test public void testCheckForTwoString

这就像奇迹一样有效.... :-)


1

我的第一反应(在没有看到示例测试代码的情况下):

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

很多建议都说要重启Eclipse并清理项目。根据我的经验,有时候Eclipse会陷入一种模式,认为我正在尝试在JUnit 3和4之间进行混合运行,因此使用旧的命名方式将“@Test”方法命名为“test…”有时会起作用。

此外,如果您安装了任何其他插件,例如m2eclipse或其他最近添加的插件,这也可能影响您的情况。如果您最近添加的任何内容使用自己的JUnit版本,则可能会导致问题。

提供一些示例测试代码可能有助于进一步调查。


谢谢 - 我确实查看了那个线程,但那里的任何提示似乎都不起作用(重新启动eclipse或清理项目没有起作用,我没有使用Maven)。 - mikera
大多数测试已经命名为“@Test public void testXXX()”,因此可能不是3/4混淆问题。 - mikera
嗯...尝试去掉“test”关键字,然后单独运行一个测试用例,看看是否可以工作? - Nick Vallely
另外,由于似乎是项目配置问题,您的 JUnit 配置(参数选项卡)在两个项目之间是否具有相同的“工作目录”?我相信它默认为 ${workspace}。 - Nick Vallely
我的工作目录是${workspace_loc:ProjectName}(默认设置)。所有的代码都在src子目录下。这可能会有问题吗? - mikera

0
我从未找到这个问题的真正原因,但升级到Eclipse 3.6最终解决了它。

我在Juno(4.2.2)中又遇到了这个问题,与m2e有关。我发现需要重新启动才能解决它。 - Mike Sokolov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接