chore: migrate junit 3/4 to junit 5 tests (#611)

* chore: migrate junit 3/4 to junit 5 tests

AbstractMojoTestCase based tests will be migrate in a separate PR

Signed-off-by: Sandra Parsick <sandra@parsick.dev>

* chore: rename tests to follow the junit 5 test name pattern

Signed-off-by: Sandra Parsick <sandra@parsick.dev>

---------

Signed-off-by: Sandra Parsick <sandra@parsick.dev>
diff --git a/pom.xml b/pom.xml
index e213292..cd63b9a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -242,6 +242,10 @@
           <groupId>xml-apis</groupId>
           <artifactId>xml-apis</artifactId>
         </exclusion>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
       </exclusions>
     </dependency>
     <dependency>
@@ -318,14 +322,6 @@
       <artifactId>rome</artifactId>
       <version>2.1.0</version>
     </dependency>
-
-    <!-- test dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.13.2</version>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
@@ -356,6 +352,16 @@
       <version>${mavenResolverVersion}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.vintage</groupId>
+      <artifactId>junit-vintage-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
@@ -458,6 +464,8 @@
                 <!-- These next two should be removed. See https://issues.apache.org/jira/browse/MCHANGES-463 -->
                 <ignoredUnusedDeclaredDependency>org.codehaus.plexus:plexus-mail-sender-javamail</ignoredUnusedDeclaredDependency>
                 <ignoredUnusedDeclaredDependency>org.codehaus.plexus:plexus-mail-sender-simple</ignoredUnusedDeclaredDependency>
+                <!-- junit vintage is needed for the tests that are based on AbstractMojoTestCase-->
+                <ignoredUnusedDeclaredDependency>org.junit.vintage:junit-vintage-engine</ignoredUnusedDeclaredDependency>
               </ignoredUnusedDeclaredDependencies>
             </configuration>
           </execution>
diff --git a/src/test/java/org/apache/maven/plugins/changes/ActionTest.java b/src/test/java/org/apache/maven/plugins/changes/ActionTest.java
index 81acd21..e9bf92d 100644
--- a/src/test/java/org/apache/maven/plugins/changes/ActionTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ActionTest.java
@@ -18,52 +18,50 @@
  */
 package org.apache.maven.plugins.changes;
 
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
 import org.apache.maven.plugins.changes.model.Action;
+import org.junit.jupiter.api.Test;
 
-public class ActionTest extends TestCase {
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class ActionTest {
     Action action = new Action();
 
-    public ActionTest(String testName) {
-        super(testName);
-    }
-
-    public static Test suite() {
-        return new TestSuite(ActionTest.class);
-    }
-
+    @Test
     public void testGetSetAction() {
         action.setAction("action");
 
         assertEquals("action", action.getAction());
     }
 
+    @Test
     public void testGetSetDev() {
         action.setDev("developer");
 
         assertEquals("developer", action.getDev());
     }
 
+    @Test
     public void testGetSetType() {
         action.setType("type");
 
         assertEquals("type", action.getType());
     }
 
+    @Test
     public void testGetSetIssue() {
         action.setIssue("issue");
 
         assertEquals("issue", action.getIssue());
     }
 
+    @Test
     public void testGetSetDueTo() {
         action.setDueTo("due-to");
 
         assertEquals("due-to", action.getDueTo());
     }
 
+    @Test
     public void testGetSetDueToEmail() {
         action.setDueToEmail("due-to-mail");
 
diff --git a/src/test/java/org/apache/maven/plugins/changes/ChangesCheckMojoTestCase.java b/src/test/java/org/apache/maven/plugins/changes/ChangesCheckMojoTest.java
similarity index 95%
rename from src/test/java/org/apache/maven/plugins/changes/ChangesCheckMojoTestCase.java
rename to src/test/java/org/apache/maven/plugins/changes/ChangesCheckMojoTest.java
index 010c8cc..d9e5360 100644
--- a/src/test/java/org/apache/maven/plugins/changes/ChangesCheckMojoTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ChangesCheckMojoTest.java
@@ -18,18 +18,18 @@
  */
 package org.apache.maven.plugins.changes;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
 /**
  * @author Dennis Lundberg
  * @version $Id$
  * @since 2.4
  */
-public class ChangesCheckMojoTestCase {
+public class ChangesCheckMojoTest {
     @Test
     public void testIsValidDate() {
         String pattern;
diff --git a/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java b/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java
index 91645d0..9603938 100644
--- a/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java
@@ -22,6 +22,10 @@
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  * @author Olivier Lamy
@@ -32,12 +36,14 @@
 
     protected ChangesValidatorMojo mojo;
 
+    @BeforeEach
     public void setUp() throws Exception {
         super.setUp();
         File pom = new File(getBasedir(), "/src/test/unit/plugin-config.xml");
         mojo = lookupMojo("changes-validate", pom);
     }
 
+    @Test
     public void testValidationSuccess() throws Exception {
         File changesXml = new File(getBasedir(), "/src/test/unit/changes.xml");
         setVariableValueToObject(mojo, "xmlPath", changesXml);
@@ -46,6 +52,7 @@
         mojo.execute();
     }
 
+    @Test
     public void testValidationFailedWithMojoFailure() throws Exception {
         File changesXml = new File(getBasedir(), "/src/test/unit/non-valid-changes.xml");
         setVariableValueToObject(mojo, "xmlPath", changesXml);
@@ -59,6 +66,7 @@
         }
     }
 
+    @Test
     public void testValidationFailedWithNoMojoFailure() throws Exception {
         File changesXml = new File(getBasedir(), "/src/test/unit/non-valid-changes.xml");
         setVariableValueToObject(mojo, "xmlPath", changesXml);
diff --git a/src/test/java/org/apache/maven/plugins/changes/ChangesXMLTest.java b/src/test/java/org/apache/maven/plugins/changes/ChangesXMLTest.java
index d8f820b..f8b1fcc 100644
--- a/src/test/java/org/apache/maven/plugins/changes/ChangesXMLTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ChangesXMLTest.java
@@ -24,11 +24,11 @@
 import org.apache.maven.plugin.testing.SilentLog;
 import org.apache.maven.plugins.changes.model.Action;
 import org.apache.maven.plugins.changes.model.Release;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  * @author Olivier Lamy
diff --git a/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java b/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java
index 006ed6e..7b83954 100644
--- a/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/FeedGeneratorTest.java
@@ -25,29 +25,35 @@
 import java.util.List;
 import java.util.Locale;
 
-import junit.framework.TestCase;
 import org.apache.maven.plugins.changes.model.Release;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  * @author ltheussl
  */
-public class FeedGeneratorTest extends TestCase {
+public class FeedGeneratorTest {
     /**
      * Test of isSupportedFeedType method, of class FeedGenerator.
      */
+    @Test
     public void testIsSupportedFeedType() {
         final FeedGenerator generator = new FeedGenerator(Locale.ENGLISH);
 
-        assertTrue("rss_0.9 not supported?", generator.isSupportedFeedType("rss_0.9"));
-        assertTrue("rss_0.91N not supported?", generator.isSupportedFeedType("rss_0.91N"));
-        assertTrue("rss_0.91U not supported?", generator.isSupportedFeedType("rss_0.91U"));
-        assertTrue("rss_0.92 not supported?", generator.isSupportedFeedType("rss_0.92"));
-        assertTrue("rss_0.93 not supported?", generator.isSupportedFeedType("rss_0.93"));
-        assertTrue("rss_0.94 not supported?", generator.isSupportedFeedType("rss_0.94"));
-        assertTrue("rss_1.0 not supported?", generator.isSupportedFeedType("rss_1.0"));
-        assertTrue("rss_2.0 not supported?", generator.isSupportedFeedType("rss_2.0"));
-        assertTrue("atom_0.3 not supported?", generator.isSupportedFeedType("atom_0.3"));
-        assertTrue("atom_1.0 not supported?", generator.isSupportedFeedType("atom_1.0"));
+        assertTrue(generator.isSupportedFeedType("rss_0.9"), "rss_0.9 not supported?");
+        assertTrue(generator.isSupportedFeedType("rss_0.91N"), "rss_0.91N not supported?");
+        assertTrue(generator.isSupportedFeedType("rss_0.91U"), "rss_0.91U not supported?");
+        assertTrue(generator.isSupportedFeedType("rss_0.92"), "rss_0.92 not supported?");
+        assertTrue(generator.isSupportedFeedType("rss_0.93"), "rss_0.93 not supported?");
+        assertTrue(generator.isSupportedFeedType("rss_0.94"), "rss_0.94 not supported?");
+        assertTrue(generator.isSupportedFeedType("rss_1.0"), "rss_1.0 not supported?");
+        assertTrue(generator.isSupportedFeedType("rss_2.0"), "rss_2.0 not supported?");
+        assertTrue(generator.isSupportedFeedType("atom_0.3"), "atom_0.3 not supported?");
+        assertTrue(generator.isSupportedFeedType("atom_1.0"), "atom_1.0 not supported?");
 
         assertFalse(generator.isSupportedFeedType(""));
         assertFalse(generator.isSupportedFeedType(null));
@@ -59,6 +65,7 @@
      *
      * @throws Exception if any.
      */
+    @Test
     public void testExport() throws Exception {
         final FeedGenerator generator = new FeedGenerator(Locale.ENGLISH);
         generator.setAuthor("author");
diff --git a/src/test/java/org/apache/maven/plugins/changes/IssueAdapterTest.java b/src/test/java/org/apache/maven/plugins/changes/IssueAdapterTest.java
index bdebac9..0398956 100644
--- a/src/test/java/org/apache/maven/plugins/changes/IssueAdapterTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/IssueAdapterTest.java
@@ -21,20 +21,23 @@
 import java.util.Arrays;
 import java.util.List;
 
-import junit.framework.TestCase;
 import org.apache.maven.plugins.changes.issues.Issue;
 import org.apache.maven.plugins.changes.issues.IssueManagementSystem;
 import org.apache.maven.plugins.changes.jira.JIRAIssueManagementSystem;
 import org.apache.maven.plugins.changes.model.Action;
 import org.apache.maven.plugins.changes.model.Release;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * @author Alan Parkinson
  * @version $Id$
  * @since 2.6
  */
-public class IssueAdapterTest extends TestCase {
+public class IssueAdapterTest {
 
+    @Test
     public void testDefaultIssueTypeMapping() {
         IssueAdapter adapter = new IssueAdapter(new JIRAIssueManagementSystem());
 
@@ -67,6 +70,7 @@
         assertEquals("", action.getType());
     }
 
+    @Test
     public void testCustomIssueTypeMappingOveridesDefaultMapping() {
         IssueManagementSystem ims = new JIRAIssueManagementSystem();
 
@@ -90,6 +94,7 @@
         assertEquals("", action.getType());
     }
 
+    @Test
     public void testCustomIssueTypeMapping() {
         IssueManagementSystem ims = new JIRAIssueManagementSystem();
         ims.getIssueTypeMap().put("Story", IssueType.ADD);
@@ -137,6 +142,7 @@
         return issue;
     }
 
+    @Test
     public void testReleaseOrder() {
         IssueManagementSystem ims = new JIRAIssueManagementSystem();
         ims.getIssueTypeMap().put("Story", IssueType.ADD);
diff --git a/src/test/java/org/apache/maven/plugins/changes/ReleaseTest.java b/src/test/java/org/apache/maven/plugins/changes/ReleaseTest.java
index 1826f64..0d7dcfd 100644
--- a/src/test/java/org/apache/maven/plugins/changes/ReleaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ReleaseTest.java
@@ -21,35 +21,30 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
 import org.apache.maven.plugins.changes.model.Action;
 import org.apache.maven.plugins.changes.model.Release;
+import org.junit.jupiter.api.Test;
 
-public class ReleaseTest extends TestCase {
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class ReleaseTest {
     Release release = new Release();
 
-    public ReleaseTest(String testName) {
-        super(testName);
-    }
-
-    public static Test suite() {
-        return new TestSuite(ReleaseTest.class);
-    }
-
+    @Test
     public void testGetSetVersion() {
         release.setVersion("version");
 
         assertEquals("version", release.getVersion());
     }
 
+    @Test
     public void testGetSetDateRelease() {
         release.setDateRelease("12-09-1979");
 
         assertEquals("12-09-1979", release.getDateRelease());
     }
 
+    @Test
     public void testGetSetAction() {
         List<Action> actionList = new ArrayList<>();
 
diff --git a/src/test/java/org/apache/maven/plugins/changes/ReleaseUtilsTest.java b/src/test/java/org/apache/maven/plugins/changes/ReleaseUtilsTest.java
index 7eba52a..a774dc5 100644
--- a/src/test/java/org/apache/maven/plugins/changes/ReleaseUtilsTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/ReleaseUtilsTest.java
@@ -22,9 +22,9 @@
 import java.util.List;
 
 import org.apache.maven.plugins.changes.model.Release;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * @author Dennis Lundberg
@@ -41,21 +41,21 @@
         List<Release> mergedReleases;
 
         mergedReleases = ReleaseUtils.mergeReleases(firstReleases, secondReleases);
-        assertEquals("Both empty", 0, mergedReleases.size());
+        assertEquals(0, mergedReleases.size(), "Both empty");
 
         Release release = new Release();
         release.setVersion("1.0");
         firstReleases.add(release);
 
         mergedReleases = ReleaseUtils.mergeReleases(firstReleases, secondReleases);
-        assertEquals("One release in first", 1, mergedReleases.size());
+        assertEquals(1, mergedReleases.size(), "One release in first");
 
         release = new Release();
         release.setVersion("1.1");
         secondReleases.add(release);
 
         mergedReleases = ReleaseUtils.mergeReleases(firstReleases, secondReleases);
-        assertEquals("One release each", 2, mergedReleases.size());
+        assertEquals(2, mergedReleases.size(), "One release each");
 
         release = new Release();
         release.setVersion("1.1");
@@ -63,15 +63,15 @@
 
         mergedReleases = ReleaseUtils.mergeReleases(firstReleases, secondReleases);
         assertEquals(
-                "Two releases in first, one release in second with one version being the same",
                 2,
-                mergedReleases.size());
+                mergedReleases.size(),
+                "Two releases in first, one release in second with one version being the same");
 
         release = new Release();
         release.setVersion("1.2");
         secondReleases.add(release);
 
         mergedReleases = ReleaseUtils.mergeReleases(firstReleases, secondReleases);
-        assertEquals("Two releases each with one version being the same", 3, mergedReleases.size());
+        assertEquals(3, mergedReleases.size(), "Two releases each with one version being the same");
     }
 }
diff --git a/src/test/java/org/apache/maven/plugins/changes/announcement/AnnouncementMojoTest.java b/src/test/java/org/apache/maven/plugins/changes/announcement/AnnouncementMojoTest.java
index 4b4af6a..55b8bf0 100644
--- a/src/test/java/org/apache/maven/plugins/changes/announcement/AnnouncementMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/announcement/AnnouncementMojoTest.java
@@ -23,13 +23,20 @@
 
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.codehaus.plexus.util.FileUtils;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 /**
  * @author Olivier Lamy
  * @version $Id$
  */
 public class AnnouncementMojoTest extends AbstractMojoTestCase {
+    @BeforeEach
+    void setup() throws Exception {
+        super.setUp();
+    }
 
+    @Test
     public void testAnnounceGeneration() throws Exception {
         File pom = new File(getBasedir(), "/src/test/unit/plugin-config.xml");
         AnnouncementMojo mojo = lookupMojo("announcement-generate", pom);
diff --git a/src/test/java/org/apache/maven/plugins/changes/github/GitHubDownloaderTest.java b/src/test/java/org/apache/maven/plugins/changes/github/GitHubDownloaderTest.java
index e8aae6b..e6e5c58 100644
--- a/src/test/java/org/apache/maven/plugins/changes/github/GitHubDownloaderTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/github/GitHubDownloaderTest.java
@@ -34,14 +34,14 @@
 import org.apache.maven.settings.crypto.SettingsDecrypter;
 import org.apache.maven.settings.crypto.SettingsDecryptionRequest;
 import org.apache.maven.settings.crypto.SettingsDecryptionResult;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.kohsuke.github.GHIssue;
 import org.kohsuke.github.GHIssueState;
 import org.kohsuke.github.GHUser;
 import org.mockito.ArgumentCaptor;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertSame;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
diff --git a/src/test/java/org/apache/maven/plugins/changes/issues/IssueManagementSystemTest.java b/src/test/java/org/apache/maven/plugins/changes/issues/IssueManagementSystemTest.java
index ed2fb9b..8be798a 100644
--- a/src/test/java/org/apache/maven/plugins/changes/issues/IssueManagementSystemTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/issues/IssueManagementSystemTest.java
@@ -21,15 +21,18 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import junit.framework.TestCase;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  * @author Alan Parkinson
  * @version $Id$
  * @since 2.7
  */
-public class IssueManagementSystemTest extends TestCase {
+public class IssueManagementSystemTest {
 
     private MockIssueManagementSystem ims;
 
@@ -41,11 +44,12 @@
         }
     }
 
-    @Override
-    protected void setUp() {
+    @BeforeEach
+    public void setUp() {
         ims = new MockIssueManagementSystem();
     }
 
+    @Test
     public void testApplyingValidCustomIssueTypes() {
         Map<String, String> issueTypes = new HashMap<>();
         issueTypes.put("add", "Story,Epic");
@@ -59,6 +63,7 @@
         }
     }
 
+    @Test
     public void testApplyingInvalidCustomIssueTypes() {
         Map<String, String> issueTypes = new HashMap<>();
         issueTypes.put("new", "Story,Epic");
diff --git a/src/test/java/org/apache/maven/plugins/changes/issues/IssueTestCase.java b/src/test/java/org/apache/maven/plugins/changes/issues/IssueTestCase.java
index 7149856..011831b 100644
--- a/src/test/java/org/apache/maven/plugins/changes/issues/IssueTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/changes/issues/IssueTestCase.java
@@ -18,7 +18,10 @@
  */
 package org.apache.maven.plugins.changes.issues;
 
-import junit.framework.TestCase;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Tests for the Issue class.
@@ -26,37 +29,43 @@
  * @author Dennis Lundberg
  * @version $Id$
  */
-public class IssueTestCase extends TestCase {
+public class IssueTestCase {
     Issue issue;
 
-    protected void setUp() {
+    @BeforeEach
+    public void setUp() {
         issue = new Issue();
     }
 
+    @Test
     public void testGetSetAssignee() {
         issue.setAssignee("assignee");
 
         assertEquals("assignee", issue.getAssignee());
     }
 
+    @Test
     public void testGetSetKey() {
         issue.setKey("key");
 
         assertEquals("key", issue.getKey());
     }
 
+    @Test
     public void testGetSetResolution() {
         issue.setResolution("resolution");
 
         assertEquals("resolution", issue.getResolution());
     }
 
+    @Test
     public void testGetSetStatus() {
         issue.setStatus("status");
 
         assertEquals("status", issue.getStatus());
     }
 
+    @Test
     public void testGetSetSummary() {
         issue.setSummary("summary");
 
diff --git a/src/test/java/org/apache/maven/plugins/changes/issues/IssueUtilsTestCase.java b/src/test/java/org/apache/maven/plugins/changes/issues/IssueUtilsTest.java
similarity index 91%
rename from src/test/java/org/apache/maven/plugins/changes/issues/IssueUtilsTestCase.java
rename to src/test/java/org/apache/maven/plugins/changes/issues/IssueUtilsTest.java
index 20a8e82..b962c06 100644
--- a/src/test/java/org/apache/maven/plugins/changes/issues/IssueUtilsTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/changes/issues/IssueUtilsTest.java
@@ -21,8 +21,11 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import junit.framework.TestCase;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  * Tests for the IssueUtils class.
@@ -31,7 +34,8 @@
  * @version $Id$
  * @since 2.4
  */
-public class IssueUtilsTestCase extends TestCase {
+public class IssueUtilsTest {
+    @Test
     public void testFilterIssuesWithVersionPrefix() {
         Issue issue1;
         issue1 = new Issue();
diff --git a/src/test/java/org/apache/maven/plugins/changes/jira/JiraChangesReportTest.java b/src/test/java/org/apache/maven/plugins/changes/jira/JiraChangesReportTest.java
index af9ebd4..9491f9a 100644
--- a/src/test/java/org/apache/maven/plugins/changes/jira/JiraChangesReportTest.java
+++ b/src/test/java/org/apache/maven/plugins/changes/jira/JiraChangesReportTest.java
@@ -19,6 +19,9 @@
 package org.apache.maven.plugins.changes.jira;
 
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 /**
  * Unit tests for {@link JiraChangesReport}.
@@ -34,6 +37,7 @@
      *
      * @throws Exception If any errors occur during the test run.
      */
+    @Test
     public void testCanGenerateReportSkipped() throws Exception {
         setVariableValueToObject(mojo, "skip", Boolean.TRUE);
         assertFalse(mojo.canGenerateReport());
diff --git a/src/test/java/org/apache/maven/plugins/changes/jira/JiraHelperTestCase.java b/src/test/java/org/apache/maven/plugins/changes/jira/JiraHelperTest.java
similarity index 94%
rename from src/test/java/org/apache/maven/plugins/changes/jira/JiraHelperTestCase.java
rename to src/test/java/org/apache/maven/plugins/changes/jira/JiraHelperTest.java
index d45e75b..cfd91ff 100644
--- a/src/test/java/org/apache/maven/plugins/changes/jira/JiraHelperTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/changes/jira/JiraHelperTest.java
@@ -20,7 +20,9 @@
 
 import java.util.Map;
 
-import junit.framework.TestCase;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Tests for the JiraHelper class.
@@ -29,7 +31,8 @@
  * @version $Id$
  * @since 2.4
  */
-public class JiraHelperTestCase extends TestCase {
+public class JiraHelperTest {
+    @Test
     public void testGetJiraUrlAndProjectId() {
         Map<String, String> map;
 
@@ -48,6 +51,7 @@
         assertEquals("https://issues.apache.org/jira", map.get("url"));
     }
 
+    @Test
     public void testGetJiraUrlAndProjectName() {
         Map<String, String> map;
         map = JiraHelper.getJiraUrlAndProjectName("https://issues.apache.org/jira/browse/DOXIA/");
@@ -59,6 +63,7 @@
         assertEquals("DOXIA", map.get("project"));
     }
 
+    @Test
     public void testGetBaseUrl() {
         String expected = "http://www.jira.com";
         String actual = JiraHelper.getBaseUrl("http://www.jira.com/context/test?werewrew");
diff --git a/src/test/java/org/apache/maven/plugins/changes/jira/JiraUnicodeTestCase.java b/src/test/java/org/apache/maven/plugins/changes/jira/JiraUnicodeTestCase.java
index dfb230c..5cef32b 100644
--- a/src/test/java/org/apache/maven/plugins/changes/jira/JiraUnicodeTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/changes/jira/JiraUnicodeTestCase.java
@@ -33,7 +33,11 @@
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.repository.LocalRepository;
 import org.eclipse.aether.repository.RemoteRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -47,6 +51,12 @@
      */
     private static final String TEST_TURTLES = "&#x6d77;&#x9f9f;&#x4e00;&#x8def;&#x4e0b;&#x8dcc;&#x3002;";
 
+    @BeforeEach
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @Test
     public void testUnicodeReport() throws Exception {
 
         File pom = new File(getBasedir(), "/src/test/unit/jira-plugin-config.xml");
diff --git a/src/test/java/org/apache/maven/plugins/changes/jira/JqlQueryBuilderTestCase.java b/src/test/java/org/apache/maven/plugins/changes/jira/JqlQueryBuilderTest.java
similarity index 95%
rename from src/test/java/org/apache/maven/plugins/changes/jira/JqlQueryBuilderTestCase.java
rename to src/test/java/org/apache/maven/plugins/changes/jira/JqlQueryBuilderTest.java
index 83f854c..c37bf8e 100644
--- a/src/test/java/org/apache/maven/plugins/changes/jira/JqlQueryBuilderTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/changes/jira/JqlQueryBuilderTest.java
@@ -21,8 +21,10 @@
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 
-import junit.framework.TestCase;
 import org.apache.maven.plugin.testing.SilentLog;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Test class for {@link JqlQueryBuilder}
@@ -31,15 +33,17 @@
  * @version $Id$
  * @since 2.8
  */
-public class JqlQueryBuilderTestCase extends TestCase {
+public class JqlQueryBuilderTest {
     private static final String ENCODING = "UTF-8";
 
+    @Test
     public void testEmptyQuery() {
         String actual = createBuilder().build();
         String expected = "";
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testSingleParameterValue() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("project = DOXIA", ENCODING);
 
@@ -47,6 +51,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testFixVersion() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("fixVersion = \"1.0\"", ENCODING);
 
@@ -54,6 +59,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testFixVersionCombinedWithOtherParameters() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("project = DOXIA AND fixVersion = \"1.0\"", ENCODING);
 
@@ -61,6 +67,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testSingleParameterSingleValue() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("priority in (Blocker)", ENCODING);
 
@@ -71,6 +78,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testSingleParameterMultipleValues() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("priority in (Blocker, Critical, Major)", ENCODING);
 
@@ -81,6 +89,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testMultipleParameterCombinedWithAND() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("priority in (Blocker) AND status in (Resolved)", ENCODING);
 
@@ -89,6 +98,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testValueWithSpacesAreQuoted() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("status in (\"In Progress\")", ENCODING);
 
@@ -96,6 +106,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testSortSingleRowAscending() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("project = DOXIA ORDER BY key ASC", ENCODING);
 
@@ -112,6 +123,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testSortSingleDescending() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("project = DOXIA ORDER BY key DESC", ENCODING);
 
@@ -126,6 +138,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testSortMultipleColumns() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("project = DOXIA ORDER BY key ASC, assignee DESC, reporter ASC", ENCODING);
 
@@ -136,6 +149,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testOrderByIsLastElement() throws UnsupportedEncodingException {
         String expected = URLEncoder.encode("project = DOXIA ORDER BY key ASC, assignee DESC, reporter ASC", ENCODING);
 
@@ -146,6 +160,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testQuoteReservedWord() throws UnsupportedEncodingException {
         String expected =
                 URLEncoder.encode("project = \"EXEC\" ORDER BY key ASC, assignee DESC, reporter ASC", ENCODING);
diff --git a/src/test/java/org/apache/maven/plugins/changes/jira/UrlBuilderTestCase.java b/src/test/java/org/apache/maven/plugins/changes/jira/UrlBuilderTest.java
similarity index 92%
rename from src/test/java/org/apache/maven/plugins/changes/jira/UrlBuilderTestCase.java
rename to src/test/java/org/apache/maven/plugins/changes/jira/UrlBuilderTest.java
index bf9d412..2e5c9e8 100644
--- a/src/test/java/org/apache/maven/plugins/changes/jira/UrlBuilderTestCase.java
+++ b/src/test/java/org/apache/maven/plugins/changes/jira/UrlBuilderTest.java
@@ -18,7 +18,9 @@
  */
 package org.apache.maven.plugins.changes.jira;
 
-import junit.framework.TestCase;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Test class for {@link UrlBuilder}
@@ -27,13 +29,15 @@
  * @version $Id$
  * @since 2.8
  */
-public class UrlBuilderTestCase extends TestCase {
+public class UrlBuilderTest {
+    @Test
     public void testUrlWithoutParameters() {
         String expected = "http://www.jira.com/context";
         String actual = new UrlBuilder("http://www.jira.com", "context").build();
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testUrlWithSingleParameter() {
         String expected = "http://www.jira.com/context?key1=value1";
         String actual = new UrlBuilder("http://www.jira.com", "context")
@@ -42,6 +46,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testUrlWithMultipleParameters() {
         String expected = "http://www.jira.com/context?key1=value1&key2=value2";
         String actual = new UrlBuilder("http://www.jira.com", "context")
@@ -51,6 +56,7 @@
         assertEquals(expected, actual);
     }
 
+    @Test
     public void testUrlWithIntParameter() {
         String expected = "http://www.jira.com/context?key1=1";
         String actual = new UrlBuilder("http://www.jira.com", "context")