我如何使用 JUnit 的 ErrorCollector 检查发生了多少次失败?
How do I use JUnit's ErrorCollector to check how many failures have occurred?
我正在尝试在单元测试中使用 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
不表示任何获取失败次数等的方法。使用当前方法,仅显示最后一次失败。
我尝试使用 toString()
将对象转换为 String
,但这只给我一个内存地址,而不是任何其他堆栈跟踪。我确定有一种方法可以获取其他堆栈跟踪,并且解决方案很简单,但我终究无法弄清楚。
经过更多研究,我发现 ErrorCollector
实际上在测试结束时打印了所有失败。只显示最后一次失败的原因是 Android Studio 的设计方式。要获取其他堆栈跟踪,必须直接查看 Logcat 输出。
我正在尝试在单元测试中使用 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
不表示任何获取失败次数等的方法。使用当前方法,仅显示最后一次失败。
我尝试使用 toString()
将对象转换为 String
,但这只给我一个内存地址,而不是任何其他堆栈跟踪。我确定有一种方法可以获取其他堆栈跟踪,并且解决方案很简单,但我终究无法弄清楚。
经过更多研究,我发现 ErrorCollector
实际上在测试结束时打印了所有失败。只显示最后一次失败的原因是 Android Studio 的设计方式。要获取其他堆栈跟踪,必须直接查看 Logcat 输出。