我认为,如果断言在2个字符串之间,那么比较选项仅出现在测试中,这是有道理的。我相信我也发了一个failNotEquals(String1,String2),比较选项也出现了。当对象没有实现equals时,或者我希望使用我自己的规则比较相等性,并且如果失败则失败,我已经这样做了。但是我在这里注意了几次有时失败注意(String,String)不启用“比较”选项。我错过了什么吗?
COMPARE选项的澄清 >比较< option是一个菜单选项,当一个人从gui右键单击一个失败的junit项时,它可以创建一个包含每个“test”项目的树。通常还有一个>打印堆栈跟踪<选项。
答案 0 :(得分:2)
当测试的最终结果是 junit.framework.ComparisonFailure 对象时,您将获得“比较”选项。在这种情况下,您可以看到两个对象(例如字符串)的视觉比较,并检查它们之间的差异。
其他类型的结果(例如 java.lang.IllegalAccessError )未解析为该效果,因为Eclipse不知道(并且无法推断)您正在比较两个对象导致这样的结果,因此它不会为您提供相同的视觉效果。
答案 1 :(得分:-1)
我不完全确定你的意思
failNotEquals不启用“比较”选项
以下是一些想法。
failNotEquals需要三个参数,而不是两个:
failNotEquals(消息,预期,实际);
即使字符串打印出来,它们也不是同一个对象。你需要告诉JUnit如何比较它们。
考虑这个小型的工作测试案例。
import junit.framework.TestCase;
public class DemoTest extends TestCase {
public void testSomething() {
String a = "Hello";
assertTrue("Strings should be the same", "Hello".equals(a));
failNotEquals("Strings should be the same", "Hello", a);
}
}
assertTrue有效,但failNotEquals没有。
assertTrue可能就是你想要的。 "Hello".equals(a)
会正确比较字符串。你也可以在这里使用equalsIgnoreCase
。
我猜测failNotEquals可能接近你正在使用的。它失败了java.lang.IllegalAccessError
。