【问题标题】:Running a single JUnit test in Eclipse在 Eclipse 中运行单个 JUnit 测试
【发布时间】:2010-10-13 09:02:54
【问题描述】:

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

【问题讨论】:

  • 如果您通过检查答案旁边的绿色标记来选择最佳答案,那就太好了。

标签: eclipse junit


【解决方案1】:

在包资源管理器中展开类。它应该向您展示所有方法。右键单击要运行的一种方法,然后从上下文菜单中选择 Run As -> JUnit(刚刚使用 Eclipse 3.4.1 进行了测试)。同样在 JUnit-results 视图中的单个条目上选择“运行”以重新运行测试以相同的方式工作。

【讨论】:

  • 不幸的是,这只适用于在该类中直接实现的测试方法。它不适用于继承的 @Test 方法。
  • 请注意,您似乎必须单击方法名称。在方法内部单击将运行整个类。 (或者至少这对我来说是这样的。)
  • 它只适用于这个特定的“包资源管理器”,在快速找到您想要测试的方法时,它非常不方便。甚至,调试器会跳过其他方法——这会消耗额外的时间。一定有更好的办法...
  • 而且它也很脆弱......现在eclipse决定在以这种方式运行时不跳过其他测试:(
【解决方案2】:

我知道的最快方法:

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

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

【讨论】:

    【解决方案3】:

    在 Eclipse 3.5 中,您可以通过将测试运行程序更改为 JUnit 3 来解决此问题。这仅适用于 JUnit 3 测试,不适用于 JUnit 4 测试。您可以通过执行以下操作来更改测试运行器:

    1. 右键单击大纲资源管理器中的一种测试方法
    2. 选择运行方式 -> 运行配置
    3. 在“测试”选项卡上,选择“运行单个测试”
    4. 在 Test Runner 下拉列表中,选择“JUnit 3”

    它也可以在其他版本中使用。

    【讨论】:

    • 好电话!在运行配置对话框中将“Test Runner”更改为“JUnit 3”在 Eclipse 3.6.0 (Helios) 中对我有用。现在我可以在 JUnit 测试中运行一个方法。 FWIW,我从来没有遇到过运行单个 JUnit 3 或 4 测试 的问题。
    • 完美这对我也有用。上面的答案没有,即使它似乎有更多的赞成票。
    【解决方案4】:

    这在带有 JUnit 4.8.2 的 Eclipse Indigo 中是可能的。在Outline 窗格中右键单击要单独进行单元测试的方法,然后选择Run As -> JUnit Test

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

    【讨论】:

    • 它似乎会测试那个特定的测试用例。但是,在那之后,它仍然会继续使用其他测试用例。
    • @lwpro2 您必须使用 JUnit 4(注释)来测试单个测试用例。 JUnit 3(扩展 TestCase)仍将运行所有相关测试。
    • wulfgar.pro 我让@lwpro2 知道,如果您使用 JUnit 4 运行程序运行 JUnit 测试(因为,例如,您使用的是 JUnit 4.8.2)但您的测试仍然扩展了 TestCase,您将无法单独运行单个测试。您必须使用 JUnit 3 运行程序或将您的测试转换为使用注释。
    • 感谢 cmets。但是,我使用的是带有 SpringJunit4ClassRunner 的 Junit4。反正也没什么大不了的。注释掉注释很快。
    • 这个答案最简单
    【解决方案5】:

    不要使用 Strg+F11 而是使用热键 Alt+Shift+X -> T.
    然后 Eclipse 会将当前打开的文件作为 JUnit 测试执行。绿色的播放按钮只会运行最后选择的运行配置。

    对我来说,它适用于 Alt+Shift+X -> T

    【讨论】:

    • 谢谢。但是假设您正在处理一个正在通过单元测试进行测试的类。在修改类时,如何在不将窗口切换到 UnitTest 文件的情况下运行其对应的 UnitTest?
    • @bibstha 你可以使用 Ctrl+3 然后输入“rerun”。这允许您重新运行最后一个 JUnit 测试用例。在 Window->Preferences->General->Keys 下,您可以为此操作分配自己的快捷方式。在我看来,Ctrl+Shift+F11 是合适的。
    【解决方案6】:

    我将添加一个高效率的键盘唯一方法,允许您调试单个单元测试(方法)。

    使用任一方法将光标移动到方法名称

    • Ctrl+Shift+向上
    • Ctrl+Shift+向下
    • Ctrl+o 然后输入方法名

    一旦您的光标位于方法名称上(或在它之前):

    • Alt+Shift+D -> T(调试)
    • Alt+Shift+X -> T(运行)

    运行测试后,您可以通过以下操作返回光标所在的位置:

    Alt+返回

    您几乎会通过以下方式获得类似 REPL 的行为:

    Ctrl+Shift+UpAlt+Shift+X -> TAlt+Back

    你也可以快速设置断点:

    Ctrl+Shift+B

    【讨论】:

      【解决方案7】:

      右键单击文件中测试方法名称的某处,然后选择“运行”->“Junit 测试”。我一直都在使用 Kepler 和 JUnit 4。

      【讨论】:

        【解决方案8】:

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

        【讨论】:

          【解决方案9】:

          只运行一种测试方法。
          在(包资源管理器或项目资源管理器)展开类。它应该向您展示所有方法。右键单击要运行的一种方法,然后从上下文菜单中选择 Run As -> JUnit。

          【讨论】:

            【解决方案10】:

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

            希望对你有帮助。

            【讨论】:

              【解决方案11】:

              对我来说,它在 Eclipse 3.4.2 中也不起作用,尽管它在以前的版本中起作用(我尝试从包资源管理器运行单个方法并从 junit 视图运行单个 junit 测试)

              【讨论】:

              • 在 Eclipse 3.4.2 中从 Package Explorer 运行单个方法/测试对我来说效果很好。
              【解决方案12】:

              我同意关于 3.4.2 不再像以前版本那样工作的观点。在您可以从 JUnit 视图中右键单击一组测试中的单个测试并仅执行该测试之前。在最新版本中,它坚持始终运行所有这些。当然,该视图确实运行了您首先单击的测试,并将其余部分转储到名为“Unrooted Tests”的汇总中。如果有人知道这一点,我想知道如何解决它。

              【讨论】:

                【解决方案13】:

                阅读此处的一些 cmets,您似乎有兴趣在更改代码时运行测试,同时又不会失去对您正在处理的代码的关注。有一个 Eclipse 插件可以做到这一点。见infinitest

                【讨论】:

                  猜你喜欢
                  • 2011-02-22
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-06-02
                  • 1970-01-01
                  • 2010-09-30
                  • 1970-01-01
                  • 2013-11-24
                  • 1970-01-01
                  相关资源
                  最近更新 更多