我在这里有一个JUnit测试用例来测试一个简单的类。基本上该类只包含一个名为'sum'的方法,它返回两个数字的总和。为了测试这是否正确,我使用以下方法:Assert.assertEquals(2, my_object.sum(1, 2));
结果显示在eclipse上的一个选项卡中,在一个名为“Failure Trace”的部分中。消息说:junit.framework.AssertionFailedError: expected:<2> but was:<3>
。是否可以获取此消息并将其放入String变量中?
答案 0 :(得分:4)
assertEquals
是一种void
方法。你不能把结果变成变量。但是你可以通过try/catch
阻止来获得异常。
try{
assertEquals("foo", "foo1"); //will fail
} catch(AssertionError e){
String message = e.getMessage();
//do whatever you want with e
}
答案 1 :(得分:2)
来自Java doc assertEquals
断言两个对象是相等的。如果不是,则为AssertionError 没有消息被抛出。如果预期和实际为空,则为 被认为是平等的。
当您的病情失败时,您必须抓住AssertionError
。
试试这段代码:
@Test
public void myTest() throws Exception{
String assertionError = null;
try {
Assert.assertEquals(2,3);
}
catch (AssertionError ae) {
assertionError = ae.toString();
}
System.out.println(assertionError);
}
输出:
java.lang.AssertionError:expected:&lt; 2&gt;但是:&lt; 3&gt;
有关AssertionError的详细信息,请访问java doc:AssertionError和Assert