在控制台中显示失败的JUnit测试的结果

时间:2015-04-09 09:04:52

标签: java eclipse junit

在JUnit(4.x)测试用例中,我想获取一些日志信息,以防其中一个断言失败。假设这是测试类:

package a.b.c.d;

import org.junit.Assert;
import org.junit.Test;

public class SomeTestClass {

    @Test
    public void someSimpleTest() {
        Assert.assertEquals("123", "456");
    }
}

显然,Assert.assertEquals("123", "456");会失败。当我从Eclipse中运行此测试时,我只获得具有异常的Failure Trace。我想在控制台上打印一些关于实际失败的信息,例如:

Expected Value: "123"; Actual Value "456";

在互联网上搜索我偶然发现这个例子提供了我需要的信息。但是,我无法在控制台中获取此日志输出。

org.junit.ComparisonFailure: expected:<gradle is gr[8]> but was:<gradle is gr[eat]>
    at org.junit.Assert.assertEquals(Assert.java:115)
    at org.junit.Assert.assertEquals(Assert.java:144)
    at com.mrhaki.gradle.SampleTest.sample(SampleTest.java:8)

到目前为止,我尝试的是下面的内容,但没有帮助。

-Djava.util.logging.ConsoleHandler.level=FINEST

static {
    Logger.getGlobal().setLevel(Level.FINEST);
}

1 个答案:

答案 0 :(得分:0)

您可以尝试捕捉ComparisonFailure:

@Test
public void someSimpleTest() {
    try {
      Assert.assertEquals("123", "456");
    } catch(ComparisonFailure e) {
      System.out.println(e.getMessage);
    }
}

您还可以使用getActual()和getExpected()。更多文档here