我试图在单元测试中使用ErrorCollector,以便断言失败不会中止测试。相反,我想在测试结束时检查失败的数量,并且仅在该数量大于零时才让测试失败。

所以我的基本测试看起来像这样:

@RunWith(AndroidJUnit4.class)
public class SampleAndroidTest {

    @Rule
    public ErrorCollector errors = new ErrorCollector();

    @Test
    public void testErrorCollector() throws Exception {
        try {
            assertEquals(1, 1); // should pass
        } catch (Throwable t) {
            errors.addError(t);
        }
        try {
            assertEquals(1, 2); // should fail
        } catch (Throwable t) {
            errors.addError(t);
        }
        try {
            assertEquals(1, 3); // should fail
        } catch (Throwable t) {
            errors.addError(t);
        }
    }
}


但是,我不确定如何处理errors对象。 Javadocs for ErrorCollector并不表示获取故障数量的任何方法,等等。使用当前方法,仅显示最后一个故障。

我尝试使用String将对象转换为toString(),但这只给了我一个内存地址,而没有其他堆栈跟踪信息。我敢肯定,有一种方法可以获取其他堆栈跟踪,并且解决方案很简单,但是我无法终生解决。

最佳答案

经过更多研究后,我发现ErrorCollector实际上会在测试结束时打印所有失败。仅显示最后一个失败的原因是由于Android Studio的设计方式。要获取其他堆栈跟踪,必须直接查看Logcat输出。

关于java - 如何使用JUnit的ErrorCollector检查发生了多少次故障?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41054030/

10-09 04:15