jung icon indicating copy to clipboard operation
jung copied to clipboard

Consider migrating from JUnit 3/4 to JUnit Jupiter & JUnit 5

Open jbduncan opened this issue 6 years ago • 1 comments

If we decide this is worth doing, we will have to take the following things into account.

  1. We should prefer JUnit Jupiter API's assertThrows over the try..fail..catch idiom
  2. 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.
  3. We'll have to use assertTimeout or assertTimeoutPreemptively where we would have used @Test(timeout=...) or @Rule public Timeout timeout = ...
  4. We should consider using assertIterableEquals and assertLinesMatch where normal collection equality assertions are insufficient.
  5. And finally, if we use any custom @Rules or @Runners, we will need to find alternative extensions for JUnit Jupiter/5.

jbduncan avatar Jan 14 '18 13:01 jbduncan

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.

jrtom avatar Jan 16 '18 01:01 jrtom