Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/AbstractExtendedSourceEntryTestCase.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/AbstractExtendedSourceEntryTestCase.java	(revision 17283)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/AbstractExtendedSourceEntryTestCase.java	(revision 17288)
@@ -20,12 +20,4 @@
     protected static final List<String> errorsToIgnore = new ArrayList<>();
 
-    /** Entry to test */
-    protected final ExtendedSourceEntry source;
-    protected final List<String> ignoredErrors = new ArrayList<>();
-
-    protected AbstractExtendedSourceEntryTestCase(ExtendedSourceEntry source) {
-        this.source = source;
-    }
-
     protected static List<Object[]> getTestParameters(Collection<ExtendedSourceEntry> entries) throws Exception {
         return entries.stream().map(x -> new Object[] {x.getDisplayName(), cleanUrl(x.url), x}).collect(Collectors.toList());
@@ -48,8 +40,8 @@
     }
 
-    protected final void handleException(Exception e, Set<String> errors) {
+    protected final void handleException(ExtendedSourceEntry source, Exception e, Set<String> errors, List<String> ignoredErrors) {
         e.printStackTrace();
         String s = source.url + " => " + e.toString();
-        if (isIgnoredSubstring(s)) {
+        if (isIgnoredSubstring(source, s)) {
             ignoredErrors.add(s);
         } else {
@@ -58,5 +50,5 @@
     }
 
-    protected boolean isIgnoredSubstring(String substring) {
+    protected boolean isIgnoredSubstring(ExtendedSourceEntry source, String substring) {
         return errorsToIgnore.parallelStream().anyMatch(x -> substring.contains(x) || source.url.contains(x));
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java	(revision 17283)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java	(revision 17288)
@@ -10,9 +10,8 @@
 import java.util.List;
 
-import org.junit.ClassRule;
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
@@ -26,5 +25,4 @@
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
-import org.openstreetmap.josm.testutils.ParallelParameterized;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -34,5 +32,4 @@
  * Integration tests of {@link MapPaintPreference} class.
  */
-@RunWith(ParallelParameterized.class)
 class MapPaintPreferenceTestIT extends AbstractExtendedSourceEntryTestCase {
 
@@ -40,5 +37,5 @@
      * Setup rule
      */
-    @ClassRule
+    @RegisterExtension
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
     public static JOSMTestRules test = new JOSMTestRules().https().timeout(15000*60).parameters();
@@ -58,5 +55,4 @@
      * @throws Exception if an error occurs
      */
-    @Parameters(name = "{0} - {1}")
     public static List<Object[]> data() throws Exception {
         ImageProvider.clearCache();
@@ -65,20 +61,14 @@
 
     /**
-     * Constructs a new {@code MapPaintPreferenceTestIT}
+     * Test that map paint style is valid.
      * @param displayName displayed name
      * @param url URL
      * @param source source entry to test
-     */
-    MapPaintPreferenceTestIT(String displayName, String url, ExtendedSourceEntry source) {
-        super(source);
-    }
-
-    /**
-     * Test that map paint style is valid.
      * @throws Exception in case of error
      */
-    @Test
-    void testStyleValidity() throws Exception {
-        assumeFalse(isIgnoredSubstring(source.url));
+    @ParameterizedTest(name = "{0} - {1}")
+    @MethodSource("data")
+    void testStyleValidity(String displayName, String url, ExtendedSourceEntry source) throws Exception {
+        assumeFalse(isIgnoredSubstring(source, source.url));
         StyleSource style = MapPaintStyles.addStyle(source);
         if (style instanceof MapCSSStyleSource) {
@@ -100,10 +90,11 @@
         }
 
+        List<String> ignoredErrors = new ArrayList<>();
         List<Throwable> errors = new ArrayList<>(style.getErrors());
-        errors.stream().map(Throwable::getMessage).filter(this::isIgnoredSubstring).forEach(ignoredErrors::add);
+        errors.stream().map(Throwable::getMessage).filter(s -> isIgnoredSubstring(source, s)).forEach(ignoredErrors::add);
         errors.removeIf(e -> ignoredErrors.contains(e.getMessage()));
 
         List<String> warnings = new ArrayList<>(style.getWarnings());
-        warnings.stream().filter(this::isIgnoredSubstring).forEach(ignoredErrors::add);
+        warnings.stream().filter(s -> isIgnoredSubstring(source, s)).forEach(ignoredErrors::add);
         warnings.removeAll(ignoredErrors);
 
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java	(revision 17283)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java	(revision 17288)
@@ -9,4 +9,5 @@
 import java.io.IOException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
@@ -15,10 +16,8 @@
 import java.util.Set;
 
-import org.junit.ClassRule;
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.preferences.sources.ExtendedSourceEntry;
@@ -40,5 +39,4 @@
  * Integration tests of {@link TaggingPresetPreference} class.
  */
-@RunWith(Parameterized.class)
 class TaggingPresetPreferenceTestIT extends AbstractExtendedSourceEntryTestCase {
 
@@ -46,5 +44,5 @@
      * Setup rule
      */
-    @ClassRule
+    @RegisterExtension
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
     public static JOSMTestRules test = new JOSMTestRules().https().timeout(10000*120).parameters();
@@ -69,5 +67,4 @@
      * @throws Exception if an error occurs
      */
-    @Parameters(name = "{0} - {1}")
     public static List<Object[]> data() throws Exception {
         ImageProvider.clearCache();
@@ -76,33 +73,28 @@
 
     /**
-     * Constructs a new {@code TaggingPresetPreferenceTestIT}
+     * Test that tagging presets are valid.
      * @param displayName displayed name
      * @param url URL
      * @param source source entry to test
-     */
-    TaggingPresetPreferenceTestIT(String displayName, String url, ExtendedSourceEntry source) {
-        super(source);
-    }
-
-    /**
-     * Test that tagging presets are valid.
      * @throws Exception in case of error
      */
-    @Test
-    void testPresetsValidity() throws Exception {
-        assumeFalse(isIgnoredSubstring(source.url));
+    @ParameterizedTest(name = "{0} - {1}")
+    @MethodSource("data")
+    void testPresetsValidity(String displayName, String url, ExtendedSourceEntry source) throws Exception {
+        assumeFalse(isIgnoredSubstring(source, source.url));
+        List<String> ignoredErrors = new ArrayList<>();
         Set<String> errors = new HashSet<>();
         try {
-            testPresets(errors, source);
+            testPresets(errors, source, ignoredErrors);
         } catch (IOException e) {
             try {
                 Logging.warn(e);
                 // try again in case of temporary network error
-                testPresets(errors, source);
+                testPresets(errors, source, ignoredErrors);
             } catch (SAXException | IOException e1) {
-                handleException(e1, errors);
+                handleException(source, e1, errors, ignoredErrors);
             }
         } catch (SAXException | IllegalArgumentException e) {
-            handleException(e, errors);
+            handleException(source, e, errors, ignoredErrors);
         }
         assertTrue(errors.isEmpty(), errors::toString);
@@ -110,5 +102,6 @@
     }
 
-    private void testPresets(Set<String> messages, ExtendedSourceEntry source) throws SAXException, IOException {
+    private void testPresets(Set<String> messages, ExtendedSourceEntry source, List<String> ignoredErrors)
+            throws SAXException, IOException {
         Collection<TaggingPreset> presets = TaggingPresetReader.readAll(source.url, true);
         assertFalse(presets.isEmpty());
@@ -120,7 +113,8 @@
                 final int code = cr.getResponseCode();
                 if (HttpClient.isRedirect(code)) {
-                    addOrIgnoreError(messages, "Found HTTP redirection for " + u + " -> " + code + " -> " + cr.getHeaderField("Location"));
+                    addOrIgnoreError(source, messages,
+                            "Found HTTP redirection for " + u + " -> " + code + " -> " + cr.getHeaderField("Location"), ignoredErrors);
                 } else if (code >= 400) {
-                    addOrIgnoreError(messages, "Found HTTP error for " + u + " -> " + code);
+                    addOrIgnoreError(source, messages, "Found HTTP error for " + u + " -> " + code, ignoredErrors);
                 }
             } catch (IOException e) {
@@ -133,5 +127,5 @@
             if (message.contains(TaggingPreset.PRESET_ICON_ERROR_MSG_PREFIX)) {
                 error = true;
-                addOrIgnoreError(messages, message);
+                addOrIgnoreError(source, messages, message, ignoredErrors);
             }
         }
@@ -141,6 +135,6 @@
     }
 
-    void addOrIgnoreError(Set<String> messages, String message) {
-        if (isIgnoredSubstring(message)) {
+    void addOrIgnoreError(ExtendedSourceEntry source, Set<String> messages, String message, List<String> ignoredErrors) {
+        if (isIgnoredSubstring(source, message)) {
             ignoredErrors.add(message);
         } else {
Index: trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 17283)
+++ trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 17288)
@@ -21,7 +21,7 @@
 import java.util.stream.Collectors;
 
-import org.junit.ClassRule;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.Preferences;
@@ -49,5 +49,5 @@
      * Setup test.
      */
-    @ClassRule
+    @RegisterExtension
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
     public static JOSMTestRules test = new JOSMTestRules().main().projection().preferences().https()
