我不是一个Eclipse大师,所以请原谅我的笨拙。
在Eclipse中,当我调用Assert.assertEquals(obj1,obj2)并且失败时,如何让IDE向我显示obj1和obj2?
我正在使用JExample,但我想这不应该有所作为。
修改:这就是我看到的内容:
http://img86.yfrog.com/img86/3002/jexample.png
答案 0 :(得分:6)
Junit Eclipse插件在出现故障时提供了一个选项:“将Real与Expected TestResult进行比较”。该视图与经典内容比较工具非常接近:
问题是,只有当您使用assertEquals()
对象编写String
时才可以使用它(在屏幕截图中,我们可以看到角落中的选项未提出,没有String
类):
您可以在对象中使用toString()
进行断言,但这不是一个好的解决方案:
toString()
与equals(Object)
相关联...修改一个必须修改另一个。toString()
应该返回一个有用的方法来调试一个对象的状态,而不是识别Java语义中的对象(equals(Object)
)。据我所知,我认为JUnit Eclipse插件错过了一个功能
当比较失败时,即使我们不比较String
个对象,它也应该提供依赖于toString()
方法的两个对象的比较。
它可以提供一种比较两个不等于对象的最小视觉方式。
当然,由于equals(Object)
不一定与toString()
相关,所以应该用我们的眼睛研究突出的差异,但它已经是一个非常好的基础,无论如何,它比没有比较工具好得多。 / p>
答案 1 :(得分:4)
如果JUnit视图中的信息不够,则可以始终在例如java.lang.AssertionError上设置异常断点。运行测试时,调试器将在实际抛出异常之前立即停止。
答案 2 :(得分:3)
Assert.assertEquals()
会将预期和实际对象的toString()
表示放在它抛出的AssertionFailedError
的消息中,而eclipse将在“失败跟踪”部分显示该对象。 JUnit视图:
alt text http://www.ibm.com/developerworks/java/library/j-xp042203/junitAssertionFailure.gif
如果您要检查复杂对象,则必须使用调试器并在Assert.assertEquals()
答案 3 :(得分:1)
你在看什么?
当你执行assertTrue()并且它失败时,你会看到一个空值。
但是当你做assertEquals时,它应该向你展示它的预期和它实际得到的东西。
如果您正在使用JUnit,请确保您正在查看JUnit视图并将鼠标移动到失败的测试。
答案 4 :(得分:1)
FEST Assert将显示比较对话框,即使您比较的对象不是字符串。我更详细地解释了on my blog。
答案 5 :(得分:0)
如果您要比较的是String,那么您可以双击stack元素,它会弹出一个对话框,显示eclipse中的diff。
这仅适用于Strings。对于一般情况,查看真正原因的唯一方法是安装断点并进入它。