Index: /trunk/test/performance/org/openstreetmap/josm/data/validation/ValidationTaskPerformanceTest.java
===================================================================
--- /trunk/test/performance/org/openstreetmap/josm/data/validation/ValidationTaskPerformanceTest.java	(revision 18798)
+++ /trunk/test/performance/org/openstreetmap/josm/data/validation/ValidationTaskPerformanceTest.java	(revision 18799)
@@ -2,8 +2,12 @@
 package org.openstreetmap.josm.data.validation;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.PerformanceTestUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -13,25 +17,17 @@
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
+import org.openstreetmap.josm.testutils.annotations.Projection;
+import org.openstreetmap.josm.testutils.annotations.Territories;
 
 /**
  * Performance test of {@code ValidationTask}.
  */
+@BasicPreferences
+@Projection
+@Territories
 class ValidationTaskPerformanceTest {
 
     private List<org.openstreetmap.josm.data.validation.Test> tests;
-
-    /**
-     * Setup test.
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().projection().territories().preferences();
 
     /**
Index: /trunk/test/performance/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerPerformanceTest.java
===================================================================
--- /trunk/test/performance/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerPerformanceTest.java	(revision 18798)
+++ /trunk/test/performance/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerPerformanceTest.java	(revision 18799)
@@ -2,26 +2,22 @@
 package org.openstreetmap.josm.data.validation.tests;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.PerformanceTestUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
+import org.openstreetmap.josm.testutils.annotations.Projection;
+import org.openstreetmap.josm.testutils.annotations.Territories;
 
 /**
  * Performance test of {@code MapCSSTagChecker}.
  */
+@BasicPreferences
+@Projection
+@Territories
 class MapCSSTagCheckerPerformanceTest {
 
     private MapCSSTagChecker tagChecker;
     private DataSet dsCity;
-
-    /**
-     * Setup test.
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().projection().territories().preferences();
 
     /**
Index: /trunk/test/unit/org/openstreetmap/josm/TestUtils.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 18799)
@@ -8,4 +8,5 @@
 import static org.junit.jupiter.api.Assertions.fail;
 import static org.junit.jupiter.api.Assumptions.assumeFalse;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
 import java.awt.Component;
@@ -75,4 +76,5 @@
  */
 public final class TestUtils {
+    private static Boolean workingJMockit;
 
     private TestUtils() {
@@ -515,14 +517,18 @@
     @SuppressWarnings("null")
     public static void assumeWorkingJMockit() {
-        try {
-            // Workaround to https://github.com/jmockit/jmockit1/issues/534
-            // Inspired by https://issues.apache.org/jira/browse/SOLR-11606
-            new WindowMocker();
-            new JOptionPaneSimpleMocker();
-        } catch (UnsupportedOperationException e) {
-            assumeFalse(e != null);
-        } finally {
-            TestRunnerDecorator.cleanUpAllMocks();
-        }
+        if (workingJMockit == null) {
+            try {
+                // Workaround to https://github.com/jmockit/jmockit1/issues/534
+                // Inspired by https://issues.apache.org/jira/browse/SOLR-11606
+                new WindowMocker();
+                new JOptionPaneSimpleMocker();
+                workingJMockit = true;
+            } catch (UnsupportedOperationException e) {
+                workingJMockit = false;
+            } finally {
+                TestRunnerDecorator.cleanUpAllMocks();
+            }
+        }
+        assumeTrue(workingJMockit);
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/actions/SessionSaveActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/SessionSaveActionTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/SessionSaveActionTest.java	(revision 18799)
@@ -12,5 +12,4 @@
 
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -18,20 +17,14 @@
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.session.SessionWriterTest;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.Main;
+import org.openstreetmap.josm.testutils.annotations.Projection;
 import org.openstreetmap.josm.testutils.mockers.JOptionPaneSimpleMocker;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for class {@link SessionSaveAsAction}.
  */
+@Main
+@Projection
 class SessionSaveActionTest {
-    /**
-     * Setup test.
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().main().projection();
-
     /**
      * Unit test of {@link SessionSaveAction}
Index: /trunk/test/unit/org/openstreetmap/josm/actions/UploadActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/UploadActionTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/UploadActionTest.java	(revision 18799)
@@ -10,5 +10,4 @@
 import java.util.concurrent.TimeUnit;
 
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
@@ -25,7 +24,9 @@
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
+import org.openstreetmap.josm.testutils.annotations.Main;
+import org.openstreetmap.josm.testutils.annotations.Projection;
+import org.openstreetmap.josm.testutils.annotations.Territories;
 import org.openstreetmap.josm.testutils.mockers.WindowMocker;
 import org.openstreetmap.josm.tools.Logging;
-import org.openstreetmap.josm.tools.Territories;
 
 import mockit.Invocation;
@@ -38,18 +39,16 @@
  */
 @BasicPreferences
+@Main
+@Projection
+// Territories is needed due to test pollution. One of the listeners
+// that may get registered on SelectionEventManager requires
+// Territories. Rather unfortunately, we also need the external data to
+// avoid the NPE.
+@Territories(Territories.Initialize.ALL)
 class UploadActionTest {
     // Only needed for layer cleanup. And user identity cleanup. And ensuring that data isn't accidentally uploaded.
     // Note that the setUp method can be replaced by the @Territories extension, when that is merged.
     @RegisterExtension
-    static JOSMTestRules josmTestRules = new JOSMTestRules().main().projection().fakeAPI();
-
-    @BeforeAll
-    static void setUp() {
-        // Territories is needed due to test pollution. One of the listeners
-        // that may get registered on SelectionEventManager requires
-        // Territories. Rather unfortunately, we also need the external data to
-        // avoid the NPE.
-        Territories.initialize();
-    }
+    static JOSMTestRules josmTestRules = new JOSMTestRules().fakeAPI();
 
     /**
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/ValidatorCLITest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/ValidatorCLITest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/ValidatorCLITest.java	(revision 18799)
@@ -67,4 +67,5 @@
 
     TestHandler handler;
+    private ValidatorCLI validatorCLI;
 
     @BeforeEach
@@ -74,4 +75,5 @@
         this.handler = new TestHandler();
         Logging.getLogger().addHandler(this.handler);
+        validatorCLI = new ValidatorCLI();
     }
 
@@ -86,5 +88,5 @@
     @ValueSource(strings = {"resources/styles/standard/elemstyles.mapcss", "resources/styles/standard/potlatch2.mapcss"})
     void testInternalMapcss(final String resourceLocation) {
-        new ValidatorCLI().processArguments(new String[]{"--input", resourceLocation});
+        validatorCLI.processArguments(new String[]{"--input", resourceLocation});
         assertEquals(2, this.handler.logRecordList.size());
         assertEquals(resourceLocation + " had no errors", this.handler.logRecordList.get(0).getMessage());
@@ -111,5 +113,5 @@
     void testInternalValidatorMapcss(final String resourceLocation) {
         final String path = Paths.get(temporaryDirectory.getPath(), resourceLocation).toString();
-        new ValidatorCLI().processArguments(new String[]{"--input", path});
+        validatorCLI.processArguments(new String[]{"--input", path});
         assertEquals(2, this.handler.logRecordList.size(), this.handler.logRecordList.stream().map(LogRecord::getMessage).collect(
                 Collectors.joining(",\n")));
@@ -123,5 +125,5 @@
         final String dataPath = TestUtils.getRegressionDataFile(13165, "13165.osm");
         final String outputPath = Paths.get(temporaryDirectory.getPath(), "testBadDataTicket13165.geojson").toString();
-        new ValidatorCLI().processArguments(new String[]{"--input", dataPath, "--output", outputPath});
+        validatorCLI.processArguments(new String[]{"--input", dataPath, "--output", outputPath});
         final File outputFile = new File(outputPath);
         assertTrue(outputFile.exists());
@@ -134,5 +136,4 @@
     @Test
     void testBadDataPlusChangeFile() throws IOException {
-        final ValidatorCLI validatorCLI = new ValidatorCLI();
         // Write test data out
         final String osmPath = Paths.get(temporaryDirectory.getPath(), "testBadDataPlusChangeFile.osm").toString();
@@ -172,5 +173,4 @@
     void testNonRegression22898(final @TempDir Path preferencesLocation) throws IOException, ReflectiveOperationException {
         AnnotationUtils.resetStaticClass(Config.class);
-        final ValidatorCLI validatorCLI = new ValidatorCLI();
         final Path preferences = preferencesLocation.resolve("preferences.xml");
         try (OutputStream fos = Files.newOutputStream(preferences)) {
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java	(revision 18799)
@@ -19,5 +19,4 @@
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
@@ -43,10 +42,8 @@
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
 import org.openstreetmap.josm.io.OsmReader;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 import org.openstreetmap.josm.testutils.annotations.Projection;
+import org.openstreetmap.josm.testutils.annotations.Territories;
 import org.openstreetmap.josm.tools.Logging;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -55,13 +52,6 @@
 @BasicPreferences
 @Projection
+@Territories
 class MapCSSTagCheckerTest {
-
-    /**
-     * Setup test.
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().territories();
-
     /**
      * Setup test.
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/UntaggedNodeTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/UntaggedNodeTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/UntaggedNodeTest.java	(revision 18799)
@@ -8,5 +8,4 @@
 import java.io.InputStream;
 
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.TestUtils;
@@ -14,21 +13,13 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.OsmReader;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import org.openstreetmap.josm.testutils.annotations.Projection;
 
 /**
  * Unit tests of {@code UntaggedNode} class.
  */
+@Projection
 class UntaggedNodeTest {
 
     private final UntaggedNode test = new UntaggedNode();
-
-    /**
-     * Setup test.
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules rules = new JOSMTestRules();
 
     /**
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelperTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelperTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelperTest.java	(revision 18799)
@@ -21,5 +21,4 @@
 import javax.swing.table.DefaultTableModel;
 
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.TestUtils;
@@ -36,21 +35,14 @@
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.Projection;
+import org.openstreetmap.josm.testutils.annotations.Territories;
 import org.openstreetmap.josm.testutils.mockers.WindowMocker;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link TagEditHelper} class.
  */
+@Projection
+@Territories
 class TagEditHelperTest {
-
-    /**
-     * Setup tests
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().territories().projection();
-
     private static TagEditHelper newTagEditHelper() {
         DefaultTableModel propertyData = new DefaultTableModel();
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java	(revision 18799)
@@ -32,4 +32,5 @@
 import org.openstreetmap.josm.testutils.annotations.Main;
 import org.openstreetmap.josm.testutils.mockers.JOptionPaneSimpleMocker;
+import org.openstreetmap.josm.testutils.mockers.WindowMocker;
 
 /**
@@ -142,4 +143,5 @@
             }
         };
+        new WindowMocker();
 
         DataSet ds = new DataSet();
Index: /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/RenderingCLIAreaTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/RenderingCLIAreaTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/RenderingCLIAreaTest.java	(revision 18799)
@@ -12,5 +12,4 @@
 import org.hamcrest.CoreMatchers;
 import org.hamcrest.Matcher;
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -18,19 +17,13 @@
 import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import org.openstreetmap.josm.testutils.annotations.Projection;
+import org.openstreetmap.josm.testutils.annotations.Territories;
 
 /**
  * Tests the method {@link RenderingCLI#determineRenderingArea(org.openstreetmap.josm.data.osm.DataSet)}.
  */
+@Projection
+@Territories
 class RenderingCLIAreaTest {
-    /**
-     * Setup rule
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().projection().territories();
-
     public static Collection<Object[]> runs() {
         Collection<Object[]> runs = new ArrayList<>();
Index: /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 18799)
@@ -20,4 +20,5 @@
 import java.util.Objects;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 import java.util.logging.Handler;
@@ -27,4 +28,5 @@
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.platform.commons.util.ReflectionUtils;
@@ -40,4 +42,8 @@
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
+import org.openstreetmap.josm.testutils.annotations.Main;
+import org.openstreetmap.josm.testutils.annotations.Projection;
+import org.openstreetmap.josm.testutils.annotations.Territories;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.Logging;
@@ -49,4 +55,9 @@
  * Integration tests of {@link PluginHandler} class.
  */
+@BasicPreferences
+@Main
+@Projection
+@Territories
+@Timeout(value = 10, unit = TimeUnit.MINUTES)
 public class PluginHandlerTestIT {
 
@@ -57,6 +68,5 @@
     @RegisterExtension
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public static JOSMTestRules test = new JOSMTestRules().main().projection().preferences().https()
-            .territories().timeout(10 * 60 * 1000);
+    public static JOSMTestRules test = new JOSMTestRules().https();
 
     /**
Index: /trunk/test/unit/org/openstreetmap/josm/tools/JosmDecimalFormatSymbolsProviderTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/JosmDecimalFormatSymbolsProviderTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/JosmDecimalFormatSymbolsProviderTest.java	(revision 18799)
@@ -15,21 +15,10 @@
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link JosmDecimalFormatSymbolsProvider}.
  */
+@org.openstreetmap.josm.testutils.annotations.I18n
 class JosmDecimalFormatSymbolsProviderTest {
-
-    /**
-     * Setup rule.
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules();
-
     @BeforeAll
     static void beforeAll() throws IOException {
Index: /trunk/test/unit/org/openstreetmap/josm/tools/RightAndLefthandTrafficTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/RightAndLefthandTrafficTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/RightAndLefthandTrafficTest.java	(revision 18799)
@@ -4,10 +4,9 @@
 import static org.junit.jupiter.api.Assertions.fail;
 
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.Projection;
+import org.openstreetmap.josm.testutils.annotations.Territories;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.trajano.commons.testing.UtilityClassTestUtil;
 
@@ -15,12 +14,7 @@
  * Unit tests of {@link RightAndLefthandTraffic} class.
  */
+@Projection
+@Territories
 class RightAndLefthandTrafficTest {
-    /**
-     * Test rules.
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules rules = new JOSMTestRules().projection().territories();
-
     /**
      * Tests that {@code RightAndLefthandTraffic} satisfies utility class criteria.
Index: /trunk/test/unit/org/openstreetmap/josm/tools/TerritoriesTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/TerritoriesTest.java	(revision 18798)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/TerritoriesTest.java	(revision 18799)
@@ -14,10 +14,8 @@
 
 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.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.annotations.Projection;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import net.trajano.commons.testing.UtilityClassTestUtil;
 
@@ -25,12 +23,7 @@
  * Unit tests of {@link Territories} class.
  */
+@Projection
+@org.openstreetmap.josm.testutils.annotations.Territories
 class TerritoriesTest {
-    /**
-     * Test rules.
-     */
-    @RegisterExtension
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules rules = new JOSMTestRules().projection().territories();
-
     /**
      * Tests that {@code Territories} satisfies utility class criteria.
