Index: .settings/org.eclipse.jdt.ui.prefs
===================================================================
--- .settings/org.eclipse.jdt.ui.prefs	(revision 35895)
+++ .settings/org.eclipse.jdt.ui.prefs	(working copy)
@@ -1,6 +1,5 @@
 eclipse.preferences.version=1
 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_JOSM
 formatter_settings_version=12
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
Index: build.xml
===================================================================
--- build.xml	(revision 35895)
+++ build.xml	(working copy)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <project name="opendata" default="dist" basedir=".">
-    <property name="plugin.main.version" value="16799"/>
+    <property name="plugin.main.version" value="16838"/>
     <property name="plugin.author" value="Don-vip"/>
     <property name="plugin.class" value="org.openstreetmap.josm.plugins.opendata.OdPlugin"/>
     <property name="plugin.description" value="Allows JOSM to read Open Data formats (csv, xls, ods, kml, kmz, shp, mif) into an .osm data layer. Supports zip and 7z compression of these file types."/>
Index: src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java
===================================================================
--- src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java	(revision 35895)
+++ src/org/openstreetmap/josm/plugins/opendata/core/datasets/SimpleDataSetHandler.java	(working copy)
@@ -15,11 +15,13 @@
 import java.util.List;
 
 import org.openstreetmap.josm.data.osm.IPrimitive;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.projection.Projection;
-import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
 import org.openstreetmap.josm.plugins.opendata.core.io.OverpassApi;
+import org.openstreetmap.josm.tools.ImageResource;
+import org.openstreetmap.josm.tools.OsmPrimitiveImageProvider;
 
 public abstract class SimpleDataSetHandler extends AbstractDataSetHandler {
 
@@ -44,7 +46,8 @@
         } else {
             tag = new Tag(relevantTag);
         }
-        setMenuIcon(MapPaintStyles.getNodeIcon(tag));
+        OsmPrimitiveImageProvider.getResource(tag.getKey(), tag.getValue(), OsmPrimitiveType.NODE)
+                .map(ImageResource::getImageIcon).ifPresent(this::setMenuIcon);
     }
 
     public SimpleDataSetHandler(boolean relevantUnion, String... relevantTags) {
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/NonRegFunctionalTests.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/NonRegFunctionalTests.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/NonRegFunctionalTests.java	(working copy)
@@ -1,10 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.opendata.core.io;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import java.io.IOException;
 import java.nio.file.DirectoryIteratorException;
 import java.nio.file.DirectoryStream;
@@ -22,6 +18,11 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Superclass of non-reg functional tests.
  */
@@ -36,21 +37,21 @@
         CheckParameterUtil.ensureParameterNotNull(ds, "ds");
         // Every dataset should at least contain a node
         Collection<Node> nodes = ds.getNodes();
-        assertFalse("No nodes in dataset for "+context, nodes.isEmpty());
+        assertFalse(nodes.isEmpty(), "No nodes in dataset for "+context);
         // Nodes should all have valid coordinates
         for (Node n : nodes) {
             LatLon latlon = n.getCoor();
-            assertTrue("Node without coordinate found for "+context, latlon != null);
-            assertTrue("Node with invalid coordinate ("+latlon+") found for "+context, latlon.isValid());
-            assertFalse("Node with outside world coordinate ("+latlon+") found for "+context, n.isOutSideWorld());
+            assertNotNull(latlon, "Node without coordinate found for " + context);
+            assertTrue(latlon.isValid(), "Node with invalid coordinate ("+latlon+") found for "+context);
+            assertFalse(n.isOutSideWorld(), "Node with outside world coordinate ("+latlon+") found for "+context);
         }
         // and no empty ways
         for (Way w : ds.getWays()) {
-            assertTrue("Empty way found for "+context, w.getNodesCount() > 0);
+            assertTrue(w.getNodesCount() > 0, "Empty way found for "+context);
         }
         // neither empty relations
         for (Relation r : ds.getRelations()) {
-            assertTrue("Empty relation found for "+context, r.getMembersCount() > 0);
+            assertTrue(r.getMembersCount() > 0, "Empty relation found for "+context);
         }
     }
 
@@ -76,7 +77,6 @@
      * Lists all datasets files matching given extension.
      * @param ext file extension to search for
      * @return all datasets files matching given extension
-     * @returns List of all datasets files matching given extension
      * @throws IOException in case of I/O error
      */
     public static Collection<Path> listDataFiles(String ext) throws IOException {
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReaderTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReaderTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReaderTest.java	(working copy)
@@ -7,23 +7,25 @@
 import java.nio.file.Path;
 import java.util.Map.Entry;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.plugins.opendata.core.io.NonRegFunctionalTests;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 import org.openstreetmap.josm.tools.Logging;
 
 /**
  * Unit tests of {@link ZipReader} class.
  */
-public class ZipReaderTest {
+@BasicPreferences
+class ZipReaderTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection().noTimeout();
+    @RegisterExtension
+    public JOSMTestRules rules = new JOSMTestRules().projection().noTimeout();
 
     /**
      * Test for various zip files reading
@@ -30,7 +32,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testReadZipFiles() throws Exception {
+    void testReadZipFiles() throws Exception {
         for (Path p : NonRegFunctionalTests.listDataFiles("zip")) {
             File zipfile = p.toFile();
             Logging.info("Testing reading file "+zipfile.getPath());
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/datasets/DataSetUpdaterTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/datasets/DataSetUpdaterTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/datasets/DataSetUpdaterTest.java	(working copy)
@@ -1,16 +1,13 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.opendata.core.io.datasets;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.function.Predicate;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Way;
@@ -18,17 +15,22 @@
 import org.openstreetmap.josm.plugins.opendata.core.datasets.DataSetUpdater;
 import org.openstreetmap.josm.plugins.opendata.core.io.archive.ZipReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Unit tests of {@link DataSetUpdater} class.
  */
-public class DataSetUpdaterTest {
+@BasicPreferences
+class DataSetUpdaterTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection().devAPI().timeout(60000);
+    @RegisterExtension
+    JOSMTestRules rules = new JOSMTestRules().projection().devAPI().timeout(60000);
 
     /**
      * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/11166">#11166</a>
@@ -35,14 +37,14 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket11166() throws Exception {
+    void testTicket11166() throws Exception {
         File file = new File(TestUtils.getRegressionDataFile(11166, "raba760dissJosm.zip"));
         try (InputStream is = new FileInputStream(file)) {
             Predicate<? super Way> p = w -> w.getNodesCount() >= 0.9 * OsmApi.getOsmApi().getCapabilities().getMaxWayNodes();
             DataSet ds = ZipReader.parseDataSet(is, null, null, false);
-            assertTrue(ds.getWays().stream().filter(p).findAny().isPresent());
+            assertTrue(ds.getWays().stream().anyMatch(p));
             DataSetUpdater.updateDataSet(ds, null, file);
-            assertFalse(ds.getWays().stream().filter(p).findAny().isPresent());
+            assertFalse(ds.getWays().stream().anyMatch(p));
         }
     }
 }
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReaderTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReaderTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/GmlReaderTest.java	(working copy)
@@ -1,29 +1,31 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.opendata.core.io.geographic;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 
 /**
  * Unit tests of {@link GmlReader} class.
  */
-public class GmlReaderTest {
+@BasicPreferences
+class GmlReaderTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection().timeout(60000);
+    @RegisterExtension
+    JOSMTestRules rules = new JOSMTestRules().projection().timeout(60000);
 
     /**
      * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/11624">#11624</a>
@@ -30,12 +32,12 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket11624() throws Exception {
+    void testTicket11624() throws Exception {
         File file = new File(TestUtils.getRegressionDataFile(11624, "temp3.gml"));
         try (InputStream is = new FileInputStream(file)) {
             for (Node n : GmlReader.parseDataSet(is, null, null).getNodes()) {
-                assertNotNull(n.toString(), n.getCoor());
-                assertTrue(n.get("KICH_URL"), n.get("KICH_URL").startsWith("http://"));
+                assertNotNull(n.getCoor(), n.toString());
+                assertTrue(n.get("KICH_URL").startsWith("http://"), n.get("KICH_URL"));
             }
         }
     }
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlReaderTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlReaderTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlReaderTest.java	(working copy)
@@ -1,33 +1,35 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.opendata.core.io.geographic;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import java.io.InputStream;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.plugins.opendata.core.io.NonRegFunctionalTests;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Unit tests of {@link KmlReader} class.
  */
-public class KmlReaderTest {
+@BasicPreferences
+class KmlReaderTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection();
+    @RegisterExtension
+    JOSMTestRules rules = new JOSMTestRules().projection();
 
     /**
      * Unit test of {@link KmlReader#COLOR_PATTERN}
      */
     @Test
-    public void testColorPattern() {
+    void testColorPattern() {
         assertTrue(KmlReader.COLOR_PATTERN.matcher("00112233").matches());
         assertTrue(KmlReader.COLOR_PATTERN.matcher("44556677").matches());
         assertTrue(KmlReader.COLOR_PATTERN.matcher("8899aabb").matches());
@@ -44,7 +46,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket16402() throws Exception {
+    void testTicket16402() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(16402, "MapsMe-new.kml")) {
             NonRegFunctionalTests.testGeneric("#16402", KmlReader.parseDataSet(is, null));
         }
@@ -55,7 +57,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket12694() throws Exception {
+    void testTicket12694() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(12694, "Alvinรณpolis_314946.kml")) {
             NonRegFunctionalTests.testGeneric("#12694", KmlReader.parseDataSet(is, null));
         }
@@ -66,7 +68,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket10214() throws Exception {
+    void testTicket10214() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(10214, "utf8_test.kml")) {
             NonRegFunctionalTests.testTicket10214(KmlReader.parseDataSet(is, null));
         }
@@ -77,7 +79,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket7714() throws Exception {
+    void testTicket7714() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(7714, "doc.kml")) {
             NonRegFunctionalTests.testGeneric("#7714", KmlReader.parseDataSet(is, null));
         }
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReaderTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReaderTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReaderTest.java	(working copy)
@@ -6,8 +6,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.projection.Projections;
@@ -14,17 +14,19 @@
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
 import org.openstreetmap.josm.plugins.opendata.core.io.NonRegFunctionalTests;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 
 /**
  * Unit tests of {@link MifReader} class.
  */
-public class MifReaderTest {
+@BasicPreferences
+class MifReaderTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection();
+    @RegisterExtension
+    JOSMTestRules rules = new JOSMTestRules().projection();
 
     private static AbstractDataSetHandler newHandler(final String epsgCode) {
         AbstractDataSetHandler handler = new AbstractDataSetHandler() {
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReaderTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReaderTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReaderTest.java	(working copy)
@@ -1,19 +1,15 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.opendata.core.io.geographic;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.util.Collection;
+import java.util.Objects;
 
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
@@ -20,17 +16,25 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.plugins.opendata.core.io.NonRegFunctionalTests;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Unit tests of {@link ShpReader} class.
  */
-public class ShpReaderTest {
+@BasicPreferences
+class ShpReaderTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection().timeout(60000);
+    @RegisterExtension
+    JOSMTestRules rules = new JOSMTestRules().projection().timeout(60000);
 
     /**
      * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/12714">#12714</a>
@@ -37,11 +41,11 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket12714() throws Exception {
+    void testTicket12714() throws Exception {
         File file = new File(TestUtils.getRegressionDataFile(12714, "linhas.shp"));
         try (InputStream is = new FileInputStream(file)) {
             for (Node n : ShpReader.parseDataSet(is, file, null, null).getNodes()) {
-                assertNotNull(n.toString(), n.getCoor());
+                assertNotNull(n.getCoor(), n.toString());
             }
         }
     }
@@ -51,15 +55,15 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    @Ignore("work in progress")
-    public void testTicket11761() throws Exception {
+    @Disabled("work in progress")
+    void testTicket11761() throws Exception {
         File file = new File(TestUtils.getRegressionDataFile(11761, "HAR.shp"));
         try (InputStream is = new FileInputStream(file)) {
             for (Node n : ShpReader.parseDataSet(is, file, null, null).getNodes()) {
-                assertNotNull(n.toString(), n.getCoor());
-                assertFalse(n.toString(), LatLon.ZERO.equals(n.getCoor()));
-                assertFalse(n.toString(), n.isOutSideWorld());
-                assertTrue(n.toString(), n.getCoor().isValid());
+                assertNotNull(n.getCoor(), n.toString());
+                assertNotEquals(LatLon.ZERO, n.getCoor(), n.toString());
+                assertFalse(n.isOutSideWorld(), n.toString());
+                assertTrue(Objects.requireNonNull(n.getCoor()).isValid(), n.toString());
             }
         }
     }
@@ -69,7 +73,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket10214() throws Exception {
+    void testTicket10214() throws Exception {
         File file = new File(TestUtils.getRegressionDataFile(10214, "utf8_test.shp"));
         try (InputStream is = new FileInputStream(file)) {
             NonRegFunctionalTests.testTicket10214(ShpReader.parseDataSet(is, file, null, null));
@@ -81,7 +85,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket8309() throws Exception {
+    void testTicket8309() throws Exception {
         File file = new File(TestUtils.getRegressionDataFile(8309, "new_ti_declarada.shp"));
         try (InputStream is = new FileInputStream(file)) {
             NonRegFunctionalTests.testGeneric("#8309", ShpReader.parseDataSet(is, file, null, null));
@@ -93,7 +97,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket13843() throws Exception {
+    void testTicket13843() throws Exception {
         File file = new File(TestUtils.getRegressionDataFile(13843, "test.shp"));
         try (InputStream is = new FileInputStream(file)) {
             Collection<Way> ways = ShpReader.parseDataSet(is, file, null, null).getWays();
@@ -109,7 +113,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket17529() throws Exception {
+    void testTicket17529() throws Exception {
         // There is only 1 feature in this data set.
         File file = new File(TestUtils.getRegressionDataFile(17529, "west_webmerc.shp"));
         try (InputStream is = new FileInputStream(file)) {
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/TabReaderTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/TabReaderTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/geographic/TabReaderTest.java	(working copy)
@@ -5,22 +5,24 @@
 import java.io.FileInputStream;
 import java.io.InputStream;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.plugins.opendata.core.io.NonRegFunctionalTests;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 
 /**
  * Unit tests of {@link TabReader} class.
  */
-public class TabReaderTest {
+@BasicPreferences
+class TabReaderTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection().timeout(60000);
+    @RegisterExtension
+    JOSMTestRules rules = new JOSMTestRules().projection().timeout(60000);
 
     /**
      * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/15159">#15159</a>
@@ -27,7 +29,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket15159() throws Exception {
+    void testTicket15159() throws Exception {
         File file = new File(TestUtils.getRegressionDataFile(15159, "Sanisette.tab"));
         try (InputStream is = new FileInputStream(file)) {
             NonRegFunctionalTests.testGeneric("#15159", TabReader.parseDataSet(is, file, null, null));
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvReaderTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvReaderTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/tabular/CsvReaderTest.java	(working copy)
@@ -3,8 +3,8 @@
 
 import java.io.InputStream;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -13,17 +13,19 @@
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
 import org.openstreetmap.josm.plugins.opendata.core.io.NonRegFunctionalTests;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 
 /**
  * Unit tests of {@link CsvReader} class.
  */
-public class CsvReaderTest {
+@BasicPreferences
+class CsvReaderTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection();
+    @RegisterExtension
+    JOSMTestRules rules = new JOSMTestRules().projection();
 
     private static AbstractDataSetHandler newHandler(final String epsgCode) {
         AbstractDataSetHandler handler = new AbstractDataSetHandler() {
@@ -55,7 +57,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket18029() throws Exception {
+    void testTicket18029() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(18029, "gtfs_stops.broken.csv")) {
             NonRegFunctionalTests.testGeneric("#18029", CsvReader.parseDataSet(is, newHandler("EPSG:4326"), null));
         }
@@ -66,7 +68,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket13508() throws Exception {
+    void testTicket13508() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(13508, "arrets-de-bus0.csv")) {
             NonRegFunctionalTests.testGeneric("#13508", CsvReader.parseDataSet(is, newHandler("EPSG:4326"), null));
         }
@@ -77,7 +79,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket10214() throws Exception {
+    void testTicket10214() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(10214, "utf8_test.csv")) {
             NonRegFunctionalTests.testTicket10214(CsvReader.parseDataSet(is, newHandler("EPSG:4326"), null));
         }
@@ -88,7 +90,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket8805() throws Exception {
+    void testTicket8805() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(8805, "XXX.csv")) {
             NonRegFunctionalTests.testGeneric("#8805", CsvReader.parseDataSet(is, newHandler("EPSG:4326"), null));
         }
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsReaderTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsReaderTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/tabular/OdsReaderTest.java	(working copy)
@@ -3,22 +3,24 @@
 
 import java.io.InputStream;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.plugins.opendata.core.io.NonRegFunctionalTests;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 
 /**
  * Unit tests of {@link OdsReader} class.
  */
-public class OdsReaderTest {
+@BasicPreferences
+class OdsReaderTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection();
+    @RegisterExtension
+    JOSMTestRules rules = new JOSMTestRules().projection();
 
     /**
      * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/13821">#13821</a>
@@ -25,7 +27,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket13821() throws Exception {
+    void testTicket13821() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(13821, "1_set_v_0.6_2016_06_21_06_00_23_a.ods")) {
             NonRegFunctionalTests.testGeneric("#13821", OdsReader.parseDataSet(is, null, null));
         }
Index: test/unit/org/openstreetmap/josm/plugins/opendata/core/io/tabular/XlsReaderTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/plugins/opendata/core/io/tabular/XlsReaderTest.java	(revision 35895)
+++ test/unit/org/openstreetmap/josm/plugins/opendata/core/io/tabular/XlsReaderTest.java	(working copy)
@@ -1,13 +1,10 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.opendata.core.io.tabular;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
 import java.io.InputStream;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -17,17 +14,22 @@
 import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
 import org.openstreetmap.josm.plugins.opendata.core.io.NonRegFunctionalTests;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 /**
  * Unit tests of {@link XlsReader} class.
  */
-public class XlsReaderTest {
+@BasicPreferences
+class XlsReaderTest {
 
     /**
      * Setup test.
      */
-    @Rule
-    public JOSMTestRules rules = new JOSMTestRules().preferences().projection();
+    @RegisterExtension
+    public JOSMTestRules rules = new JOSMTestRules().projection();
 
     private static AbstractDataSetHandler newHandler(final String epsgCode) {
         AbstractDataSetHandler handler = new AbstractDataSetHandler() {
@@ -59,7 +61,7 @@
      * @throws Exception if an error occurs during reading
      */
     @Test
-    public void testTicket15980() throws Exception {
+    void testTicket15980() throws Exception {
         try (InputStream is = TestUtils.getRegressionDataStream(15980, "qry_OSM_Import_Orte.xls")) {
             DataSet ds = XlsReader.parseDataSet(is, newHandler("EPSG:4326"), null);
             NonRegFunctionalTests.testGeneric("#15980", ds);
@@ -71,7 +73,7 @@
 
     private static void doTest15980(DataSet ds, String name, String addr, String fixme) {
         OsmPrimitive osm = ds.getPrimitives(o -> name.equals(o.get("name"))).iterator().next();
-        assertNotNull(name, osm);
+        assertNotNull(osm, name);
         assertEquals(addr, osm.get("addr:housenumber"));
         assertEquals(fixme, osm.get("fixme"));
     }
