下面的代码在 JUnit 环境下运行时不会崩溃。但是在应用程序中运行时它会崩溃。我可以在控制台中看到错误日志,但测试被标记为通过。
@Test
public void test() {
Observable observable = Observable.error(new RuntimeException());
observable.subscribe();
}
所以,问题是:如何让它在 JUnit 中崩溃。因为是的,如果某些东西在应用程序中不起作用,那么如果它在单元测试中也不起作用,那是一件好事:)
在这个例子中,我可以直接访问 observable。但在我的真实测试中,我没有。真正的 observables 只是被测试类的内部细节。我能做的最多的事情就是注入调度程序或其他东西。
那么,如何在没有直接访问 observable 的情况下让它崩溃呢?
另外,我刚刚检查了这段代码也没有崩溃:
@Test
public void test() {
Observable observable = Observable.error(new RuntimeException());
observable.subscribe(new Consumer() {
@Override
public void accept(Object o) throws Exception {
throw new RuntimeException();
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throw new RuntimeException();
}
});
}