Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JUnit';s ErrorCollector检查发生了多少次故障?_Java_Unit Testing_Junit_Errorcollector - Fatal编程技术网

Java 如何使用JUnit';s ErrorCollector检查发生了多少次故障?

Java 如何使用JUnit';s ErrorCollector检查发生了多少次故障?,java,unit-testing,junit,errorcollector,Java,Unit Testing,Junit,Errorcollector,我试图在单元测试中使用ErrorCollector,以便断言失败不会中止测试。相反,我想在测试结束时检查失败的次数,只有当该次数大于零时才允许测试失败 因此,我的基本测试如下所示: @RunWith(AndroidJUnit4.class) public class SampleAndroidTest { @Rule public ErrorCollector errors = new ErrorCollector(); @Test public void t

我试图在单元测试中使用
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
对象。不指示获取故障数等的任何方法。使用当前方法,仅显示最后一次故障


我尝试使用
toString()
将对象转换为
字符串,但这只给了我一个内存地址,没有任何其他堆栈跟踪。我确信有一种方法可以获得其他堆栈跟踪,而且解决方案很简单,但我无法终生解决它。

在做了更多的研究后,我发现
ErrorCollector
实际上会在测试结束时打印出所有的失败。之所以只显示最后一次失败,是因为Android Studio的设计方式。要获得其他堆栈跟踪,必须直接查看LogCAT输出。

如果您的测试真的是这样的话,您应该考虑使用“理论”或“参数化”测试。或者你应该检查一下