2.x: Uncaught errors fail silently in junit tests. #5234
Description
I was writing a utility that involved decorating observers and catching uncaught errors from the delegate observer's onError
handling when I noticed in testing that tests always passed. There would be log output, but tests would pass none the less.
Demo of the issue can be found here, but the gist of it is that the following test passes in standard JUnit:
@Test
public void blerg() {
Observable.error(new RuntimeException("This should fail the test"))
.subscribe();
}
I'm trying to understand why errors are passed directly to the handler rather than just thrown, and also curious to get thoughts on making this behavior configurable (if for no other reason than to disable in junit tests). I can't find any details about why this behavior happens in JUnit either.
I think this has worrisome implications. In our codebase alone, I dropped in an error watching rule to track these and discovered over 150 tests with uncaught exceptions that are being marked as passing otherwise.