Index: trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java	(revision 18918)
@@ -225,4 +225,25 @@
         assertEquals("Value 'Residential' for key 'highway' is unknown, maybe 'residential' is meant?",
                 errors.get(0).getDescription());
+        assertEquals(Severity.WARNING, errors.get(0).getSeverity());
+        assertFalse(errors.get(0).isFixable());
+    }
+
+    @Test
+    void testRegionKey() throws IOException {
+        final List<TestError> errors = test(OsmUtils.createPrimitive("node highway=crossing crossing_ref=zebra"));
+        assertEquals(1, errors.size());
+        assertEquals("Invalid region for this preset", errors.get(0).getMessage());
+        assertEquals("Preset Pedestrian Crossing should not have the key crossing_ref", errors.get(0).getDescription());
+        assertEquals(Severity.WARNING, errors.get(0).getSeverity());
+        assertFalse(errors.get(0).isFixable());
+
+    }
+
+    @Test
+    void testRegionTag() throws IOException {
+        final List<TestError> errors = test(OsmUtils.createPrimitive("relation type=waterway ref:gnis=123456"));
+        assertEquals(1, errors.size());
+        assertEquals("Invalid region for this preset", errors.get(0).getMessage());
+        assertEquals("Preset Waterway should not have the key ref:gnis", errors.get(0).getDescription());
         assertEquals(Severity.WARNING, errors.get(0).getSeverity());
         assertFalse(errors.get(0).isFixable());
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItemTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItemTest.java	(revision 18918)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItemTest.java	(revision 18918)
@@ -0,0 +1,34 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets;
+
+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 javax.swing.JPanel;
+
+import org.junit.jupiter.api.Test;
+
+/**
+ * Test class for {@link TaggingPresetItem}
+ */
+public interface TaggingPresetItemTest {
+    /**
+     * Get the instance to test
+     *
+     * @return The item to test
+     */
+    TaggingPresetItem getInstance();
+
+    /**
+     * Test method for {@link TaggingPresetItem#addToPanel(JPanel, TaggingPresetItemGuiSupport)}
+     */
+    @Test
+    default void testAddToPanel() {
+        TaggingPresetItem item = getInstance();
+        JPanel p = new JPanel();
+        assertEquals(0, p.getComponentCount());
+        assertFalse(item.addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
+        assertNotEquals(0, p.getComponentCount());
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/CheckGroupTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/CheckGroupTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/CheckGroupTest.java	(revision 18918)
@@ -2,27 +2,14 @@
 package org.openstreetmap.josm.gui.tagging.presets.items;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import javax.swing.JPanel;
-
-import org.junit.jupiter.api.Test;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 
 /**
  * Unit tests of {@link CheckGroup} class.
  */
-class CheckGroupTest {
-    /**
-     * Unit test for {@link CheckGroup#addToPanel}.
-     */
-    @Test
-    void testAddToPanel() {
-        CheckGroup cg = new CheckGroup();
-        JPanel p = new JPanel();
-        assertEquals(0, p.getComponentCount());
-        assertFalse(cg.addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
-        assertTrue(p.getComponentCount() > 0);
+class CheckGroupTest implements TaggingPresetItemTest {
+    @Override
+    public TaggingPresetItem getInstance() {
+        return new CheckGroup();
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/CheckTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/CheckTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/CheckTest.java	(revision 18918)
@@ -9,4 +9,5 @@
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 import org.openstreetmap.josm.testutils.annotations.Main;
 
@@ -15,13 +16,21 @@
  */
 @Main
-class CheckTest {
+class CheckTest implements RegionSpecificTest, TaggingPresetItemTest {
+    @Override
+    public Check getInstance() {
+        final Check check = new Check();
+        check.key = "crossing:island";
+        return check;
+    }
+
     /**
      * Unit test for {@link Check#addToPanel}.
      */
+    @Override
     @Test
-    void testAddToPanel() {
+    public void testAddToPanel() {
         JPanel p = new JPanel();
         assertEquals(0, p.getComponentCount());
-        assertTrue(new Check().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
+        assertTrue(getInstance().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
         assertTrue(p.getComponentCount() > 0);
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/ComboTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/ComboTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/ComboTest.java	(revision 18918)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 import org.openstreetmap.josm.testutils.annotations.I18n;
@@ -23,13 +24,19 @@
 @I18n("de")
 @Main
-class ComboTest {
+class ComboTest implements TaggingPresetItemTest {
+    @Override
+    public Combo getInstance() {
+        return new Combo();
+    }
+
     /**
-     * Unit test for {@link Combo#addToPanel}.
+     * Unit test for {@link Check#addToPanel}.
      */
+    @Override
     @Test
-    void testAddToPanel() {
+    public void testAddToPanel() {
         JPanel p = new JPanel();
         assertEquals(0, p.getComponentCount());
-        assertTrue(new Combo().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
+        assertTrue(getInstance().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
         assertTrue(p.getComponentCount() > 0);
     }
@@ -40,5 +47,5 @@
     @Test
     void testUseLastAsDefault() {
-        Combo combo = new Combo();
+        final Combo combo = getInstance();
         combo.key = "addr:country";
         combo.values_from = "java.util.Locale#getISOCountries";
@@ -119,5 +126,5 @@
     @Test
     void testColor() {
-        Combo combo = new Combo();
+        final Combo combo = getInstance();
         combo.key = "colour";
         combo.values = "red;green;blue;black";
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/ItemSeparatorTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/ItemSeparatorTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/ItemSeparatorTest.java	(revision 18918)
@@ -2,26 +2,13 @@
 package org.openstreetmap.josm.gui.tagging.presets.items;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import javax.swing.JPanel;
-
-import org.junit.jupiter.api.Test;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 
 /**
  * Unit tests of {@link ItemSeparator} class.
  */
-class ItemSeparatorTest {
-    /**
-     * Unit test for {@link ItemSeparator#addToPanel}.
-     */
-    @Test
-    void testAddToPanel() {
-        JPanel p = new JPanel();
-        assertEquals(0, p.getComponentCount());
-        assertFalse(new ItemSeparator().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
-        assertTrue(p.getComponentCount() > 0);
+class ItemSeparatorTest implements TaggingPresetItemTest {
+    @Override
+    public ItemSeparator getInstance() {
+        return new ItemSeparator();
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/KeyTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/KeyTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/KeyTest.java	(revision 18918)
@@ -9,14 +9,24 @@
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 
 /**
  * Unit tests of {@link Key} class.
  */
-class KeyTest {
+class KeyTest implements RegionSpecificTest, TaggingPresetItemTest {
+    @Override
+    public Key getInstance() {
+        final Key key = new Key();
+        key.key = "highway";
+        key.value = "residential";
+        return key;
+    }
+
     /**
      * Unit test for {@link Key#addToPanel}.
      */
     @Test
-    void testAddToPanel() {
+    @Override
+    public void testAddToPanel() {
         JPanel p = new JPanel();
         assertEquals(0, p.getComponentCount());
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/LabelTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/LabelTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/LabelTest.java	(revision 18918)
@@ -9,17 +9,24 @@
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 
 /**
  * Unit tests of {@link Label} class.
  */
-class LabelTest {
+class LabelTest implements TaggingPresetItemTest {
+    @Override
+    public Label getInstance() {
+        return new Label();
+    }
+
     /**
-     * Unit test for {@link Label#addToPanel}.
+     * Unit test for {@link Check#addToPanel}.
      */
+    @Override
     @Test
-    void testAddToPanel() {
+    public void testAddToPanel() {
         JPanel p = new JPanel();
         assertEquals(0, p.getComponentCount());
-        assertTrue(new Label().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
+        assertTrue(getInstance().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
         assertTrue(p.getComponentCount() > 0);
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/LinkTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/LinkTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/LinkTest.java	(revision 18918)
@@ -10,4 +10,5 @@
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 import org.openstreetmap.josm.spi.preferences.Config;
 
@@ -15,11 +16,17 @@
  * Unit tests of {@link Link} class.
  */
-class LinkTest {
+class LinkTest implements TaggingPresetItemTest {
+    @Override
+    public Link getInstance() {
+        return new Link();
+    }
+
     /**
      * Unit test for {@link Link#addToPanel}.
      */
+    @Override
     @Test
-    void testAddToPanel() {
-        Link l = new Link();
+    public void testAddToPanel() {
+        Link l = getInstance();
         JPanel p = new JPanel();
         assertEquals(0, p.getComponentCount());
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelectTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelectTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelectTest.java	(revision 18918)
@@ -9,4 +9,5 @@
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 import org.openstreetmap.josm.testutils.annotations.Main;
 
@@ -15,13 +16,19 @@
  */
 @Main
-class MultiSelectTest {
+class MultiSelectTest implements TaggingPresetItemTest {
+    @Override
+    public MultiSelect getInstance() {
+        return new MultiSelect();
+    }
+
     /**
-     * Unit test for {@link MultiSelect#addToPanel}.
+     * Unit test for {@link Check#addToPanel}.
      */
+    @Override
     @Test
-    void testAddToPanel() {
+    public void testAddToPanel() {
         JPanel p = new JPanel();
         assertEquals(0, p.getComponentCount());
-        assertTrue(new MultiSelect().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
+        assertTrue(getInstance().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
         assertTrue(p.getComponentCount() > 0);
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/OptionalTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/OptionalTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/OptionalTest.java	(revision 18918)
@@ -2,26 +2,13 @@
 package org.openstreetmap.josm.gui.tagging.presets.items;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import javax.swing.JPanel;
-
-import org.junit.jupiter.api.Test;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 
 /**
  * Unit tests of {@link Optional} class.
  */
-class OptionalTest {
-    /**
-     * Unit test for {@link Optional#addToPanel}.
-     */
-    @Test
-    void testAddToPanel() {
-        JPanel p = new JPanel();
-        assertEquals(0, p.getComponentCount());
-        assertFalse(new Optional().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
-        assertTrue(p.getComponentCount() > 0);
+class OptionalTest implements TaggingPresetItemTest {
+    @Override
+    public Optional getInstance() {
+        return new Optional();
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/PresetLinkTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/PresetLinkTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/PresetLinkTest.java	(revision 18918)
@@ -2,12 +2,5 @@
 package org.openstreetmap.josm.gui.tagging.presets.items;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import javax.swing.JPanel;
-
-import org.junit.jupiter.api.Test;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 import org.openstreetmap.josm.testutils.annotations.TaggingPresets;
 
@@ -16,16 +9,10 @@
  */
 @TaggingPresets
-class PresetLinkTest {
-    /**
-     * Unit test for {@link PresetLink#addToPanel}.
-     */
-    @Test
-    void testAddToPanel() {
-        PresetLink l = new PresetLink();
-        l.preset_name = "River";
-        JPanel p = new JPanel();
-        assertEquals(0, p.getComponentCount());
-        assertFalse(l.addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
-        assertTrue(p.getComponentCount() > 0);
+class PresetLinkTest implements TaggingPresetItemTest {
+    @Override
+    public PresetLink getInstance() {
+        PresetLink presetLink = new PresetLink();
+        presetLink.preset_name = "River";
+        return presetLink;
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/RegionSpecificTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/RegionSpecificTest.java	(revision 18918)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/RegionSpecificTest.java	(revision 18918)
@@ -0,0 +1,50 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import static org.junit.jupiter.api.Assertions.assertAll;
+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.assertThrows;
+
+import org.junit.jupiter.api.Test;
+import org.openstreetmap.josm.testutils.annotations.Territories;
+import org.xml.sax.SAXException;
+
+/**
+ * Test class for {@link RegionSpecific}
+ */
+@Territories
+interface RegionSpecificTest {
+    /**
+     * Get the test instance
+     * @return The instance to test
+     */
+    RegionSpecific getInstance();
+
+    @Test
+    default void testSetRegions() throws SAXException {
+        final RegionSpecific regionSpecific = getInstance();
+        if ("java.lang.Record".equals(regionSpecific.getClass().getSuperclass().getCanonicalName())) {
+            assertThrows(UnsupportedOperationException.class, () -> regionSpecific.setRegions("US"));
+        } else {
+            assertFalse(regionSpecific.regions() != null && regionSpecific.regions().contains("US"),
+                    "Using US as the test region for setting regions");
+            regionSpecific.setRegions("US");
+            assertAll(() -> assertEquals(1, regionSpecific.regions().size()),
+                    () -> assertEquals("US", regionSpecific.regions().iterator().next()));
+        }
+    }
+
+    @Test
+    default void testSetExcludeRegions() {
+        final RegionSpecific regionSpecific = getInstance();
+        if ("java.lang.Record".equals(regionSpecific.getClass().getSuperclass().getCanonicalName())) {
+            assertThrows(UnsupportedOperationException.class, () -> regionSpecific.setExclude_regions(true));
+        } else {
+            final boolean oldExclude = regionSpecific.exclude_regions();
+            regionSpecific.setExclude_regions(!oldExclude);
+            assertNotEquals(oldExclude, regionSpecific.exclude_regions());
+        }
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/RolesTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/RolesTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/RolesTest.java	(revision 18918)
@@ -2,26 +2,14 @@
 package org.openstreetmap.josm.gui.tagging.presets.items;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import javax.swing.JPanel;
-
-import org.junit.jupiter.api.Test;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 
 /**
  * Unit tests of {@link Roles} class.
  */
-class RolesTest {
-    /**
-     * Unit test for {@link Roles#addToPanel}.
-     */
-    @Test
-    void testAddToPanel() {
-        JPanel p = new JPanel();
-        assertEquals(0, p.getComponentCount());
-        assertFalse(new Roles().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
-        assertTrue(p.getComponentCount() > 0);
+class RolesTest implements TaggingPresetItemTest {
+    @Override
+    public TaggingPresetItem getInstance() {
+        return new Roles();
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/SpaceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/SpaceTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/SpaceTest.java	(revision 18918)
@@ -2,26 +2,13 @@
 package org.openstreetmap.josm.gui.tagging.presets.items;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import javax.swing.JPanel;
-
-import org.junit.jupiter.api.Test;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 
 /**
  * Unit tests of {@link Space} class.
  */
-class SpaceTest {
-    /**
-     * Unit test for {@link Space#addToPanel}.
-     */
-    @Test
-    void testAddToPanel() {
-        JPanel p = new JPanel();
-        assertEquals(0, p.getComponentCount());
-        assertFalse(new Space().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
-        assertTrue(p.getComponentCount() > 0);
+class SpaceTest implements TaggingPresetItemTest {
+    @Override
+    public Space getInstance() {
+        return new Space();
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/TextTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/TextTest.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/TextTest.java	(revision 18918)
@@ -9,4 +9,5 @@
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemGuiSupport;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItemTest;
 import org.openstreetmap.josm.testutils.annotations.Main;
 
@@ -15,13 +16,19 @@
  */
 @Main
-class TextTest {
+class TextTest implements TaggingPresetItemTest {
+    @Override
+    public Text getInstance() {
+        return new Text();
+    }
+
     /**
-     * Unit test for {@link Text#addToPanel}.
+     * Unit test for {@link Check#addToPanel}.
      */
+    @Override
     @Test
-    void testAddToPanel() {
+    public void testAddToPanel() {
         JPanel p = new JPanel();
         assertEquals(0, p.getComponentCount());
-        assertTrue(new Text().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
+        assertTrue(getInstance().addToPanel(p, TaggingPresetItemGuiSupport.create(false)));
         assertTrue(p.getComponentCount() > 0);
     }
Index: trunk/test/unit/org/openstreetmap/josm/testutils/annotations/TaggingPresets.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/testutils/annotations/TaggingPresets.java	(revision 18896)
+++ trunk/test/unit/org/openstreetmap/josm/testutils/annotations/TaggingPresets.java	(revision 18918)
@@ -9,4 +9,5 @@
 import java.util.Collection;
 
+import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -25,9 +26,15 @@
 @Target({ ElementType.METHOD, ElementType.TYPE })
 @BasicPreferences
+@Territories
 @ExtendWith(TaggingPresets.TaggingPresetsExtension.class)
 public @interface TaggingPresets {
 
-    class TaggingPresetsExtension implements BeforeEachCallback {
+    class TaggingPresetsExtension implements BeforeEachCallback, BeforeAllCallback {
         private static int expectedHashcode = 0;
+
+        @Override
+        public void beforeAll(ExtensionContext extensionContext) throws Exception {
+            setup();
+        }
 
         @Override
@@ -37,5 +44,5 @@
 
         /**
-         * Setup the tagging presets
+         * Set up the tagging presets
          */
         public static synchronized void setup() {
