在Eclipse中运行单个JUnit测试

94
如果我有一个包含多个测试的测试套件,当我尝试运行单个单元测试时,无论是从代码编辑器的上下文菜单中还是从JUnit视图中,它似乎都坚持始终运行整个套件,而不是单个测试。是否有一种方法可以禁用或更改此行为,以便我可以要求运行那个,而仅运行那个测试。

12
请您通过勾选答案旁边的绿色标记来选择最佳答案。 - guerda
14个回答

104

在包资源管理器中展开类。它应该会显示出所有的方法。右键点击您想要运行的某个方法,然后从上下文菜单中选择“Run As -> JUnit” (仅在Eclipse 3.4.1中测试过)。同样,在JUnit结果视图中选择一个单独的条目并选择“Run”,即可以相同的方式重新运行测试。


3
很遗憾,这仅适用于直接在该类中实现的测试方法。它不适用于继承的@Test方法。 - Christopher Barber
2
请注意,似乎您必须单击方法名称。单击方法内部将运行整个类。(或者至少对我来说是这样的行为。) - emragins
似乎只能从这个特定的“包资源管理器”中工作,当需要快速查找要测试的方法时,这更加不方便。即使在那种情况下,调试器似乎也会跳过其他方法 - 这需要额外的时间。一定有更好的方法... - Macilias
而且它很脆弱...现在Eclipse决定在这种运行方式下不跳过其他测试 :( - Macilias

33

我知道的最快的方法:

  1. 按下 Ctrl+Shift+(将光标移动到当前方法声明),
  2. 按下 Alt+Shift+x (或者按下 d 进行调试),然后按下 t(这是运行 JUnit 测试的热键),
  3. 检查测试结果,
  4. 按下 Alt+ 返回到之前的代码行。

如果您想运行所有测试,可以跳过步骤 1 和 4。


13
在Eclipse 3.5中,您可以通过将测试运行器更改为JUnit 3来解决此问题。这仅适用于JUnit 3测试,而不适用于JUnit 4测试。您可以执行以下操作来更改测试运行器:
  1. 在Outline资源管理器中右键单击其中一个测试方法
  2. 选择"Run As -> Run Configurations"
  3. 在“Test”选项卡上,选择“Run a single test”
  4. 在“Test Runner”下拉菜单中,选择“JUnit 3”
可能也适用于其他版本。

不错的选择!在Eclipse 3.6.0(Helios)中将“测试运行程序”更改为“JUnit 3”在运行配置对话框中对我有用。现在我可以在JUnit测试中运行单个方法。顺便说一句,我从来没有遇到过运行单个JUnit 3或4测试的问题。 - Adam Monsen
完美,这对我也起作用了。尽管上面的答案似乎得到了更多的赞同,但它却不起作用。 - dreza

13

在Eclipse Indigo中,使用JUnit 4.8.2可以实现这一点。您可以在Outline窗格中右键单击要逐个单元测试的方法,然后选择Run As -> JUnit Test

甚至可以在源编辑器中有选择性地右键单击一个测试方法名称,并选择Run As -> Junit Test


1
看起来会测试那个特定的测试用例。然而,在那之后,它仍然继续进行其他测试用例。 - Jackie
@lwpro2 你必须使用JUnit 4(注解)来测试单个测试用例。JUnit 3(继承TestCase)仍然会运行所有相关的测试。 - AnthonyW
1
wulfgar.pro 我是在告诉 @lwpro2,如果你正在使用 JUnit 4 运行器(例如你正在使用 JUnit 4.8.2),但你的测试仍然扩展自 TestCase,那么你将无法单独运行一个测试。你必须使用 JUnit 3 运行器或将你的测试转换为使用注释。 - AnthonyW
感谢您的评论。不过,我正在使用Junit4和SpringJunit4ClassRunner。无论如何,这不是什么大问题。注释掉注解很快就能完成。 - Jackie
这个答案最简单。 - Jackson Tale

10
我将增加一种高效的键盘操作方式,允许您仅调试单个单元测试(方法)。将您的光标移动到方法名称上,可以使用以下任一组合:Ctrl+Shift+UpCtrl+Shift+DownCtrl+o然后输入方法名称。将光标放在方法名称(或其之前)后,可以执行以下操作: Alt+Shift+D -> T (Debug)或 Alt+Shift+X -> T (Run)。运行测试后,您可以通过以下操作回到光标所在位置:Alt+Back。通过以下组合,您几乎可以获得 REPL 的行为:Ctrl+Shift+UpAlt+Shift+X -> TAlt+Back。您还可以快速设置断点:Ctrl+Shift+B

9
不要使用Strg+F11,而是使用热键Alt+Shift+X -> T。然后Eclipse将执行当前打开的文件作为JUnit测试。绿色播放按钮仅会运行最后选择的运行配置。对我来说,使用Alt+Shift+X -> T效果很好。

谢谢。但假设你正在处理一个正在被单元测试检测的类。在修改这个类的过程中,你如何运行对应的单元测试,而不用切换到单元测试文件的窗口呢? - Bibek Shrestha
@bibstha 你可以使用Ctrl+3,然后输入“rerun”来重新运行上一个JUnit测试用例。在Window->Preferences->General->Keys下,你可以为此操作分配自己的快捷键。在我看来,Ctrl+Shift+F11是比较合适的选择。 - guerda

3

如何只运行一个测试方法。
在(包资源管理器或项目资源管理器)中展开类。它应该会显示您所有的方法。右键单击要运行的一个方法,然后从上下文菜单中选择“Run As -> JUnit”。
进入图片描述


3

在文件中的测试方法名称上右键单击,选择"运行" -> "Junit 测试"。我经常使用 Kepler 和 JUnit 4 进行此操作。


2
我曾经和其他人一样,在使用Eclipse 3.4.1和JUnit 4测试运行器时遇到了同样的问题——无法运行单个测试。但是我在其他地方找到了一个建议,解决了这个问题。我的测试类仍然扩展了junit.framework.TestCase。当我停止扩展TestCase时,一切都正常工作了,我能够使用JUnit 4测试运行器运行单个JUnit测试。当然,我需要使用JUnit 4注释,并使用静态导入来导入assert方法,但我已经做到了这一点——我只是没有删除TestCase继承。

1
如果您有多个测试在多个文件中,并且您只想运行特定文件中的测试,您可以右键单击该文件,然后选择“运行为” -> “Junit测试”。 现在,如果您只想运行一个包含多个测试的文件中的一个测试,我的猜测是(我这里没有安装eclipse),大纲视图将列出文件的所有测试方法,您可能能够右键单击单个测试方法并将其执行为JUNit测试。

希望对您有所帮助。


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