Hi folks,

I recently made some changes to commons-cli to move it from JUnit 4 to JUnit 5. This was mostly straightforward, and I think it went pretty well.

Currently looking into doing the same for commons-net, but there are a couple of tricky tests that probably require some up front discussion, mostly JUnit 3 style tests, and one tricky JUnit 4 Parameterized Test.

In previous versions, test classes could be extended and their test methods would be executed as part of the child class' execution. This was true for testt methods annotated with JUnit 4's @Test, or JUnit 3's test-prefix naming convention.

Unfortunately, this is no longer the case in JUnit 5. I think this is a poor design decision on their part, as it makes it significantly harder to move to JUnit 5, and it makes certain types of tests just plain difficult. There is some discussion about this in the JUnit community [1], but I can't predict whether this will ever be resolved in a way to makes commons-net's upgrade any easier.

One of those cases is AbstractFTPParseTest and its children. This abstract base class has 11 concrete test classes. I'm struggling to see a minimally invasive way to migrate these to JUnit 5. I'm loath to use a heavy handed approach there.

A second tricky case is FTPSClientTest, which is a Parameterized test of a form that no longer exists in JUnit 5. It basically creates two instances of a test class with a boolean flag (once true, once false).

JUnit 5's @ParameterizedTest annotation operates on the **test method** level, not on the class level, which I think would make the test case slower and harded to read.

An alternative approach would be to use Dynamic Tests, which basically generate test cases programmatically, but again, that makes grokking the test a lot more difficult as it requires a greater understanding of JUnit's features.

Any insights into this would be greatly appreciated.

Best,

Elric

[1] https://github.com/junit-team/junit5/issues/960

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to