代码之家  ›  专栏  ›  技术社区  ›  nes1983

在Eclipse中,当输入失败时,如何看到assert.assertequals的输入?

  •  4
  • nes1983  · 技术社区  · 15 年前

    我不是日食大师,所以请原谅我的笨拙。

    在Eclipse中,当我调用assert.assertequals(obj1,obj2)而失败时,如何让IDE显示obj1和obj2?

    我在用 JExample 但我想这没什么区别。


    编辑 :我看到的是:
    http://img86.yfrog.com/img86/3002/jexample.png .

    6 回复  |  直到 8 年前
        1
  •  4
  •   JesperE    15 年前

    如果JUnit视图中的信息不足以满足您的需要,则可以始终在上设置异常断点,例如java.lang.断言错误。运行测试时,调试器将在实际引发异常之前立即停止。

        2
  •  6
  •   davidxxx    8 年前
    1. 当您的对象有点复杂时,与故障跟踪进行比较不是一项简单的任务。
    2. 如果尚未重新定义ToString(),则与调试器进行比较非常有用。作为解决方案,它仍然非常乏味,因为您应该用眼睛检查两侧的每个对象。
      1. JUnitEclipse插件在出现故障时提供了一个选项:“将实际结果与预期的测试结果进行比较”。该视图与经典的内容比较工具非常接近:


        问题是,只有当您写入 assertEquals()时,它才可用。 string objects(在屏幕截图中,我们可以看到角落中的选项不是proposed with no string class):

        您可以在断言中的对象上使用 ToString()

        • 首先,您将 toString()与 equals(object) 关联起来。一个的修改必须包含另一个的修改。
        • 其次,语义不再受到尊重。<代码> toStrug()/代码>应该返回一个有用的方法来调试一个对象的状态,而不是识别Java语义中的一个对象(<代码>等于(对象)< /代码>)。

        据我所知,我认为JunitEclipse插件遗漏了一个特性。
        当比较失败时,即使当我们比较not string objects时,它也应该提供依赖于它们的两个对象的比较 toString() method。< BR> 它可以提供一种最小的视觉方式来比较两个不相等的对象。< BR> 当然,正如 equals(object) is not necessary related to toString() ,highlighted differences should be studied with our eyes but it would be already a very good basis and anyway,it is much better than no comparison tool.

        重新定义ToString()。作为解决方案,它仍然非常乏味,因为您应该用眼睛检查两侧的每个对象。

      JUnitEclipse插件在出现故障时提供了一个选项:“将实际结果与预期的测试结果进行比较”。该视图与经典的内容比较工具非常接近: Comparison with String objects


      问题是它只有在你写的时候才可用 assertEquals() 具有 String 对象(在屏幕截图中,我们可以看到角落中的选项不是在没有 班级): Comparison with no String objects

      你可以用 toString() 关于断言中的对象,但这不是一个好的解决方案:

      • 首先,你将 ToString()。 具有 equals(Object) …修改一个必须要修改另一个。
      • 其次,语义不再受到尊重。 托斯特林() 应该返回一个有用的方法来调试一个对象的状态,而不是识别Java语义中的对象( 等于(对象) )

      据我所知,我认为junit eclipse插件遗漏了一个特性。
      当比较失败时,即使我们没有比较 对象,它应该提供两个依赖它们的对象的比较 ToString()。 方法。
      它可以提供一种最小的视觉方式来比较两个不相等的对象。
      当然,作为 等于(对象) 不一定与 托斯特林() ,强调的差异应该用我们的眼睛来研究,但它已经是一个很好的基础,而且无论如何,它比没有比较工具要好得多。

        3
  •  3
  •   Michael Borgwardt    15 年前

    Assert.assertEquals() 会把 toString() 在消息中表示预期和实际对象 AssertionFailedError 它抛出,Eclipse将在JUnit视图的“故障跟踪”部分显示:

    alt text http://www.ibm.com/developerworks/java/library/j-xp042203/junitAssertionFailure.gif

    如果要检查复杂的对象,则必须使用调试器并在其中放置断点。 assert.assertequals()。

        4
  •  1
  •   Uri    15 年前

    你看到什么了?

    当您断言true()并且失败时,您会看到一个空值。

    但当你确定断言等于时,它应该向你展示它所期望的和它实际得到的。

    如果您正在使用JUnit,请确定您正在查看JUnit视图并将鼠标移动到失败的测试。

        5
  •  1
  •   user405935    14 年前

    FEST Assert 即使您比较的对象不是字符串,也将在断言失败时显示比较对话框。我解释得更详细了 on my blog .

        6
  •  0
  •   David Nouls    10 年前

    如果您比较的是字符串,那么您可以双击stack元素,它将弹出一个对话框,显示Eclipse中的diff。

    但这只适用于字符串。对于一般情况,查看真正原因的唯一方法是安装一个断点并单步执行它。