Open prbprbprb opened 3 years ago
The code works as expected. From @kcooney's remarks in #1363
The expressions passed into these methods should call production code, not test code, and AssumptionViolationException should generally be thrown by test code.
The Javadoc can be improved but currently we haven't planned to build another JUnit 4 release.
Looking at the provided example I think it should be changed to
...
} catch (AssumptionViolatedException e) {
throw e;
} catch (Throwable e) {
mPostAssertionRule.addError(e);
} finally {
...
so that it immediately stops the test. @prbprbprb what do you think?
This was previously discussed in #1363 and I think the new treatment of
ErrorCollector. checkSucceeds()
is correct. HoweverErrorCollector.addError()
is more commonly used when calling sub-methods or in wrapperRules
(AOSP example) so it seems clearer (to me) to pass assumption failures through.1702 is potential fix, although this has similar properties to what #1363 complained about, i.e. if
addError()
is used to add multiple assumption failures then they'll get re-thrown as aMultipleFailureException
causing the test to fail. It seems to me that in that case the test probably needs restructuring anyway (e.g. to check its assumptions before calling multiple sub-methods), but I'm open to opinions.