Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
FILEUPLOAD-302: JUnit Jupiter migration #23
This PR upgrades the project's testing framework from JUnit 4.12 to the modern JUnit Jupiter 5.5.2.
Since JUnit 5 Jupiter is not backwards compatible to JUnit 4.x (or even JUnit Vintage), this PR is a bit large, even though most of the changes are merely cosmetic (such as changing the argument order,
This PR includes the following changes:
junit.framework.TestCase was introduced in JUnit 3, and while it isn't technically deprecated, it's outdated, and should not be used in JUnit 4. This patch removes its usage in the project, and replaces it with static imports from org.junit.Assert, as per JUnit 4's best practices. In addition, `@Test` annotations were added to the test methods, so they are recognized as tests by JUnit 4.
This patch upgrades the project's testing framework from JUnit 4.12 to the modern JUnit Jupiter 5.5.2. Since JUnit 5 Jupiter is not backwards compatible to JUnit 4.x (or even JUnit Vintage), this patch is a bit large, even though a lot of the changes are merely cosmetic (such as changing the argument order, see details below). In order to make the reviewer's task as easy as possible, this PR does not presume to use JUnit Jupiter's best practices and all its new functionality, but only to migrate the existing tests with as little change as possible. Following patches may want to improve the tests by using some of JUnit Jupiter's new features. This patch includes the following changes: 1. Maven dependency changes: a. junit:junit was replaced with org.junit.jupiter:junit-jupiter. 2. Annotations: a. org.junit.jupiter.api.Test was used as a drop in replacement for org.juit.Test without arguments. See 3.ii. for handling of @test annotations with an "expected" argument. b. org.junit.jupiter.api.BeforeEach was used as an drop in replacement for org.junit.Before. c. org.junit.jupiter.api.AfterEach was used as an drop in replacement for org.junit.After. 3. Assertions: a. org.junit.jupiter.api.Assertions' methods were used as drop in replacements for org.junit.Assert's methods with the same name in the simple case of an assertion without a message. In the case of an assertion with a message, org.junit.jupiter.api.Assertions' methods were used, but the argument order was changed - Assert's methods take the message as the first argument, while Assertions' methods take the message as the last argument. b. org.junit.jupiter.api.Assertions#assertThrows was used to assert that a specific exception was throws instead of an org.junit.Test annotation with an expected argument. As a side bonus, this change makes the tests slightly stricter, as now they can assert the exception was thrown from a specific line and prevent false positives where the test's "set-up" code accidentally threw that exception. 4. Parameterized tests: a. FileUploadTest was rewritten with @ParameterizedTests and @MethodSource in order to gain an equivalent functionality of JUnit 4's Parameterized runner.
It's fixed now, and the coverage is OK again.