【问题标题】:How to hit breakpoint only when some specific unit test is run?如何仅在运行某些特定单元测试时才打断点?
【发布时间】:2016-08-19 06:56:52
【问题描述】:

我正在尝试解决当我在项目中运行所有测试时unit tests 之一失败的问题。

因此,我只想在执行失败的测试时进入一些通用代码。我试图找出如何在Intellij IDEA 中实现它,因为有条件断点的功能,但现在我失败了,因为不明白我如何编写这种类型的条件,而且似乎其他可能性不真的允许这样做。

有可能吗?

【问题讨论】:

  • 你想在某个测试中打断点,当你只运行那个测试时?更具体地说,您是在问如何运行单个选定的测试而不一次运行所有测试?我很难得到你。
  • 不,我想在特定单元测试之外打断点,但是当我运行所有测试并执行这个特定单元测试时,在一些通用代码内。

标签: java unit-testing intellij-idea junit


【解决方案1】:

在失败的测试用例中放置一个断点(在图像中的第 28 行)。在公共代码中放置另一个断点(在图像中的第 42 行),并将其作为条件断点,直到测试用例中的断点被击中。要获得此窗口,请右键单击断点(有时您必须禁用然后重新启用挂起复选框)。

希望对你有帮助!

【讨论】:

  • 是的,看来这正是我要找的!谢谢!
【解决方案2】:

我不知道有一个 IDEA 功能可以让您执行此操作,但是您可以采取一些手动步骤来执行此类调试:

  1. 在失败的单元测试的第一行添加断点。
  2. 当此断点命中时,在您感兴趣的公共类中添加另一个断点。

或者,您可以通过对单元测试代码进行一些小的修改,以更自动化、可重复的方式执行此操作。

  1. 向单元测试类添加一个公共静态布尔字段,默认设置为 false。
  2. 在失败测试的第一行将此设置为 true
  3. 在您的测试条件中使用此字段。例如如果您的单元测试是“ThingTest”并且您的字段是“footest” - 您的条件将是“ThingTest.footest == true”
  4. 在失败的测试结束时将其设置为 false(如果您希望后续测试正常运行)

【讨论】:

  • 第一个选项很明确,是的,我试过了,但是因为测试随机失败,我已经尝试了很多次,累了,决定用另一种方式检查是否可行。布尔变量听起来很有趣。
【解决方案3】:

如何声明一个布尔值,默认设置为 false,只有在测试失败时才设置为 true。

然后你可以在你的断点上设置一个条件,只有当布尔值设置为 true 时才观察。

在 IntelliJ 中,您可以正常添加断点,然后右键单击它,然后选择查看断点。另一个窗口打开,您可以输入您的条件。 希望这会有所帮助。

【讨论】:

  • 从我的角度来看,@Harry Harrison 早些时候也提出了同样的建议。
  • 没问题,我们可能同时在打字。
【解决方案4】:

你有两个选择:

  • 您可以像您说的那样使用条件断点,如果公共代码中存在特定于您要检查的测试的状态(值)。例如特定的字符串参数。
  • 您可以在要检查的测试中放置一个额外断点 在从此测试调用公共代码之前。一旦这个断点 被击中你激活 original 断点。你可以这样做 手动或使用选项“Disabled until selected breakpoint is hit" 在原始断点的断点对话框中由 在组合框中选择 extra 断点。如果您使用 “自动”方式,您甚至可以取消选中 extra 的“暂停” 断点。这样,它只会在您的原始断点处暂停/暂停。

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 2017-03-02
    • 1970-01-01
    • 2014-10-01
    • 2022-11-24
    • 2019-07-02
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多