如何从JUnit assertEquals()方法获取输出并将其放入变量?

时间:2016-04-26 11:23:25

标签: java testing junit

我在这里有一个JUnit测试用例来测试一个简单的类。基本上该类只包含一个名为'sum'的方法,它返回两个数字的总和。为了测试这是否正确,我使用以下方法:Assert.assertEquals(2, my_object.sum(1, 2));结果显示在eclipse上的一个选项卡中,在一个名为“Failure Trace”的部分中。消息说:junit.framework.AssertionFailedError: expected:<2> but was:<3>。是否可以获取此消息并将其放入String变量中?

2 个答案:

答案 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:AssertionErrorAssert