I have a JUnit test case here to test a simple class. Basically the class contains just one method called 'sum' that returns the sum of two numbers. To test if this is right I use the following method: Assert.assertEquals(2, my_object.sum(1, 2));
The result displays in a tab on eclipse, in a section called "Failure Trace". The message says: junit.framework.AssertionFailedError: expected:<2> but was:<3>
. Is it possible to get this message and put it into a String variable?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
From the Java doc assertEquals will
Asserts that two objects are equal. If they are not, an AssertionError without a message is thrown. If expected and actual are null, they are considered equal.
You have to catch AssertionError
when your condition fails.
Try this code:
@Test
public void myTest() throws Exception{
String assertionError = null;
try {
Assert.assertEquals(2,3);
}
catch (AssertionError ae) {
assertionError = ae.toString();
}
System.out.println(assertionError);
}
OUTPUT:
java.lang.AssertionError: expected:<2> but was:<3>
For more info about AssertionError visit java doc : AssertionError and Assert
回答2:
assertEquals
is a void
method. You cannot put the result to variable. But you can get the exception with try/catch
block.
try{
assertEquals("foo", "foo1"); //will fail
} catch(AssertionError e){
String message = e.getMessage();
//do whatever you want with e
}