jung
jung copied to clipboard
Consider migrating from JUnit 3/4 to JUnit Jupiter & JUnit 5
If we decide this is worth doing, we will have to take the following things into account.
- We should prefer JUnit Jupiter API's
assertThrows
over thetry..fail..catch
idiom - We might want to use
assertAll
over just writing assertions one line after another, so that all potential assertion errors can be gathered and thrown together as one exception for easier debugging. - We'll have to use
assertTimeout
orassertTimeoutPreemptively
where we would have used@Test(timeout=...)
or@Rule public Timeout timeout = ...
- We should consider using
assertIterableEquals
andassertLinesMatch
where normal collection equality assertions are insufficient. - And finally, if we use any custom
@Rule
s or@Runner
s, we will need to find alternative extensions for JUnit Jupiter/5.
I'm willing to consider this, but IMO, it's something we can address after 3.0 is released. I'm more interested in adapting our tests to use Truth for most things, honestly.
Addressing a few of the points (in ignorance of how JUnit 5/Jupiter work, since I haven't used or researched them, just going from your description above):
(2) I have mixed feelings about assertAll
. Seems like you might need fewer test runs to uncover all of your errors, but it might be harder to read the outputs.
(3) I think that this is a non-issue: none of our tests have timeouts at the moment (and I wouldn't expect them to need to).
(4) Using Truth should help considerably with these scenarios.