Index: trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 10467)
@@ -12,7 +12,9 @@
 import java.text.MessageFormat;
 import java.util.Locale;
+import java.util.TimeZone;
 
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.layer.LayerManagerTest.TestLayer;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -88,4 +90,5 @@
         }
         System.setProperty("josm.home", josmHome);
+        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
         Main.initApplicationPreferences();
         Main.pref.enableSaveOnPut(false);
@@ -96,4 +99,5 @@
         Main.platform.preStartupHook();
 
+        Main.logLevel = 3;
         Main.pref.init(false);
         I18n.set(Main.pref.get("language", "en"));
@@ -127,4 +131,9 @@
 
     private void setupGUI() {
+        Main.getLayerManager().resetState();
+        assertTrue(Main.getLayerManager().getLayers().isEmpty());
+        assertNull(Main.getLayerManager().getEditLayer());
+        assertNull(Main.getLayerManager().getActiveLayer());
+
         if (Main.toolbar == null) {
             Main.toolbar = new ToolbarPreferences();
@@ -133,8 +142,6 @@
             new MainApplication().initialize();
         }
-        Main.getLayerManager().resetState();
-        assertTrue(Main.getLayerManager().getLayers().isEmpty());
-        assertNull(Main.getLayerManager().getEditLayer());
-        assertNull(Main.getLayerManager().getActiveLayer());
+        // Add a test layer to the layer manager to get the MapFrame
+        Main.getLayerManager().addLayer(new TestLayer());
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/data/AutosaveTaskTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/AutosaveTaskTest.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/data/AutosaveTaskTest.java	(revision 10467)
@@ -92,5 +92,6 @@
         Date fixed = cal.getTime();
 
-        for (int i = 0; i <= AutosaveTask.PROP_INDEX_LIMIT.get() + 1; i++) {
+        AutosaveTask.PROP_INDEX_LIMIT.put(5);
+        for (int i = 0; i <= AutosaveTask.PROP_INDEX_LIMIT.get() + 2; i++) {
             // Only retry 2 indexes to avoid 1000*1000 disk operations
             File f = task.getNewLayerFile(info, fixed, Math.max(0, i - 2));
Index: trunk/test/unit/org/openstreetmap/josm/data/PreferencesTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/PreferencesTest.groovy	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/data/PreferencesTest.groovy	(revision 10467)
@@ -37,6 +37,6 @@
             "  <tag key='language' value='en'/>%n" +
             "  <tag key='osm-server.url' value='http://api06.dev.openstreetmap.org/api'/>%n" +
-            "  <tag key='osm-server.username' value='josm_test'/>%n" +
-            "</preferences>%n", Version.getInstance().getVersion())
+            "  <tag key='osm-server.username' value='%s'/>%n" +
+            "</preferences>%n", Version.getInstance().getVersion(), Main.pref.get("osm-server.username"))
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java	(revision 10467)
@@ -17,6 +17,6 @@
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.validation.Severity;
@@ -25,11 +25,21 @@
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
 import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * JUnit Test of "Opening hours" validation test.
+ * @see OpeningHourTest
  */
 public class OpeningHourTestTest {
-
-    private static final OpeningHourTest OPENING_HOUR_TEST = new OpeningHourTest();
+    /**
+     * We need prefs for this. We check strings so we need i18n.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+
+    private OpeningHourTest openingHourTest;
 
     /**
@@ -39,6 +49,6 @@
     @Before
     public void setUp() throws Exception {
-        JOSMFixture.createUnitTestFixture().init();
-        OPENING_HOUR_TEST.initialize();
+        openingHourTest = new OpeningHourTest();
+        openingHourTest.initialize();
     }
 
@@ -50,13 +60,13 @@
         final String key = "opening_hours";
         // frequently used tags according to https://taginfo.openstreetmap.org/keys/opening_hours#values
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "24/7"), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 08:30-20:00"), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr sunrise-sunset"), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "09:00-21:00"), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Su-Th sunset-24:00,04:00-sunrise; Fr-Sa sunset-sunrise"), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Su-Th sunset-24:00, 04:00-sunrise; Fr-Sa sunset-sunrise"), hasSize(1));
-        assertEquals(Severity.OTHER, OPENING_HOUR_TEST.checkOpeningHourSyntax(
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "24/7"), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr 08:30-20:00"), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr sunrise-sunset"), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "09:00-21:00"), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Su-Th sunset-24:00,04:00-sunrise; Fr-Sa sunset-sunrise"), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Su-Th sunset-24:00, 04:00-sunrise; Fr-Sa sunset-sunrise"), hasSize(1));
+        assertEquals(Severity.OTHER, openingHourTest.checkOpeningHourSyntax(
                 key, "Su-Th sunset-24:00, 04:00-sunrise; Fr-Sa sunset-sunrise").get(0).getSeverity());
-        assertEquals("Su-Th sunset-24:00,04:00-sunrise; Fr-Sa sunset-sunrise", OPENING_HOUR_TEST.checkOpeningHourSyntax(
+        assertEquals("Su-Th sunset-24:00,04:00-sunrise; Fr-Sa sunset-sunrise", openingHourTest.checkOpeningHourSyntax(
                 key, "Su-Th sunset-24:00, 04:00-sunrise; Fr-Sa sunset-sunrise").get(0).getPrettifiedValue());
     }
@@ -64,7 +74,7 @@
     @Test
     public void testI18n() {
-        assertTrue(OPENING_HOUR_TEST.checkOpeningHourSyntax("opening_hours", ".", OpeningHourTest.CheckMode.POINTS_IN_TIME, false, "de")
+        assertTrue(openingHourTest.checkOpeningHourSyntax("opening_hours", ".", OpeningHourTest.CheckMode.POINTS_IN_TIME, false, "de")
                 .get(0).toString().contains("Unerwartetes Zeichen"));
-        assertFalse(OPENING_HOUR_TEST.checkOpeningHourSyntax("opening_hours", ".", OpeningHourTest.CheckMode.POINTS_IN_TIME, false, "en")
+        assertFalse(openingHourTest.checkOpeningHourSyntax("opening_hours", ".", OpeningHourTest.CheckMode.POINTS_IN_TIME, false, "en")
                 .get(0).toString().contains("Unerwartetes Zeichen"));
     }
@@ -76,5 +86,5 @@
     public void testCheckOpeningHourSyntax2() {
         final String key = "opening_hours";
-        final List<OpeningHourTest.OpeningHoursTestError> errors = OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Tue");
+        final List<OpeningHourTest.OpeningHoursTestError> errors = openingHourTest.checkOpeningHourSyntax(key, "Mo-Tue");
         assertThat(errors, hasSize(2));
         assertEquals(key + " - Mo-Tue <--- (Please use the abbreviation \"Tu\" for \"tue\".)", errors.get(0).getMessage());
@@ -92,5 +102,5 @@
     public void testCheckOpeningHourSyntax3() {
         final String key = "opening_hours";
-        final List<OpeningHourTest.OpeningHoursTestError> errors = OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Sa-Su 10.00-20.00");
+        final List<OpeningHourTest.OpeningHoursTestError> errors = openingHourTest.checkOpeningHourSyntax(key, "Sa-Su 10.00-20.00");
         assertThat(errors, hasSize(2));
         assertEquals(key + " - Sa-Su 10. <--- (Please use \":\" as hour/minute-separator)", errors.get(0).getMessage());
@@ -106,7 +116,7 @@
     @Test
     public void testCheckOpeningHourSyntax4() {
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(null, null), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(null, ""), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(null, " "), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(null, null), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(null, ""), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(null, " "), isEmpty());
     }
 
@@ -117,11 +127,11 @@
     public void testCheckOpeningHourSyntax5() {
         final String key = "opening_hours";
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "badtext"), hasSize(1));
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "badtext"), hasSize(1));
         assertEquals(key + " - ba <--- (Unexpected token: \"b\" Invalid/unsupported syntax.)",
-                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "badtext").get(0).getMessage());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "5.00 p.m-11.00 p.m"), hasSize(1));
+                openingHourTest.checkOpeningHourSyntax(key, "badtext").get(0).getMessage());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "5.00 p.m-11.00 p.m"), hasSize(1));
         assertEquals(key + " - 5.00 p <--- (hyphen (-) or open end (+) in time range expected. "
                 + "For working with points in time, the mode for opening_hours.js has to be altered. Maybe wrong tag?)",
-                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "5.00 p.m-11.00 p.m").get(0).getMessage());
+                openingHourTest.checkOpeningHourSyntax(key, "5.00 p.m-11.00 p.m").get(0).getMessage());
     }
 
@@ -132,5 +142,5 @@
     public void testCheckOpeningHourSyntax6() {
         final String key = "opening_hours";
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "PH open \"always open on public holidays\""), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "PH open \"always open on public holidays\""), isEmpty());
     }
 
@@ -141,7 +151,7 @@
     public void testCheckOpeningHourSyntax7() {
         final String key = "opening_hours";
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "9:00-18:00"), hasSize(1));
-        assertEquals(Severity.OTHER, OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "9:00-18:00").get(0).getSeverity());
-        assertEquals("09:00-18:00", OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "9:00-18:00").get(0).getPrettifiedValue());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "9:00-18:00"), hasSize(1));
+        assertEquals(Severity.OTHER, openingHourTest.checkOpeningHourSyntax(key, "9:00-18:00").get(0).getSeverity());
+        assertEquals("09:00-18:00", openingHourTest.checkOpeningHourSyntax(key, "9:00-18:00").get(0).getPrettifiedValue());
     }
 
@@ -152,9 +162,9 @@
     public void testCheckOpeningHourSyntaxTicket9367() {
         final String key = "opening_hours";
-        assertEquals(Severity.WARNING, OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getSeverity());
+        assertEquals(Severity.WARNING, openingHourTest.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getSeverity());
         assertEquals(key + " - Mo,Tu 04-17 <--- (Time range without minutes specified. "
                 + "Not very explicit! Please use this syntax instead \"04:00-17:00\".)",
-                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getMessage());
-        assertEquals("Mo,Tu 04:00-17:00", OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getPrettifiedValue());
+                openingHourTest.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getMessage());
+        assertEquals("Mo,Tu 04:00-17:00", openingHourTest.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getPrettifiedValue());
     }
 
@@ -166,17 +176,17 @@
         final String key = "service_times";
         // frequently used tags according to https://taginfo.openstreetmap.org/keys/service_times#values
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Su 10:00", OpeningHourTest.CheckMode.BOTH), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "automatic", OpeningHourTest.CheckMode.BOTH), not(isEmpty()));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Sa 09:00-18:00", OpeningHourTest.CheckMode.BOTH), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Su 09:30; We 19:30", OpeningHourTest.CheckMode.BOTH), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 00:00-00:30,04:00-00:30; Sa,Su,PH 00:00-24:00",
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Su 10:00", OpeningHourTest.CheckMode.BOTH), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "automatic", OpeningHourTest.CheckMode.BOTH), not(isEmpty()));
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Mo-Sa 09:00-18:00", OpeningHourTest.CheckMode.BOTH), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Su 09:30; We 19:30", OpeningHourTest.CheckMode.BOTH), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr 00:00-00:30,04:00-00:30; Sa,Su,PH 00:00-24:00",
                 OpeningHourTest.CheckMode.BOTH), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
                 OpeningHourTest.CheckMode.BOTH), hasSize(1));
         assertEquals("Mo-Fr 00:00-00:30,04:00-00:30; Sa,Su,PH 00:00-24:00",
-                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
+                openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
                 OpeningHourTest.CheckMode.BOTH).get(0).getPrettifiedValue());
         assertEquals("Mo-Fr 00:00-00:30,04:00-00:30; Sa,Su,PH 00:00-24:00",
-                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
+                openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
                 OpeningHourTest.CheckMode.BOTH).get(0).getPrettifiedValue());
     }
@@ -189,16 +199,16 @@
         final String key = "collection_times";
         // frequently used tags according to https://taginfo.openstreetmap.org/keys/collection_times#values
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Sa 09:00", OpeningHourTest.CheckMode.BOTH), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "fixme", OpeningHourTest.CheckMode.BOTH), not(isEmpty()));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "daily", OpeningHourTest.CheckMode.BOTH), not(isEmpty()));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 13:30,17:45,19:00; Sa 15:00; Su 11:00",
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Mo-Sa 09:00", OpeningHourTest.CheckMode.BOTH), isEmpty());
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "fixme", OpeningHourTest.CheckMode.BOTH), not(isEmpty()));
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "daily", OpeningHourTest.CheckMode.BOTH), not(isEmpty()));
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr 13:30,17:45,19:00; Sa 15:00; Su 11:00",
                 OpeningHourTest.CheckMode.BOTH), isEmpty());
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
+        assertThat(openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
                 OpeningHourTest.CheckMode.BOTH), hasSize(1));
         assertEquals(Severity.OTHER,
-                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
+                openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
                 OpeningHourTest.CheckMode.BOTH).get(0).getSeverity());
         assertEquals("Mo-Fr 13:30,17:45,19:00; Sa 15:00; Su 11:00",
-                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
+                openingHourTest.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
                 OpeningHourTest.CheckMode.BOTH).get(0).getPrettifiedValue());
     }
@@ -222,5 +232,5 @@
         }
         for (final Tag t : values) {
-            final List<OpeningHourTest.OpeningHoursTestError> errors = OPENING_HOUR_TEST.checkOpeningHourSyntax(t.getKey(), t.getValue());
+            final List<OpeningHourTest.OpeningHoursTestError> errors = openingHourTest.checkOpeningHourSyntax(t.getKey(), t.getValue());
             assertThat(t + " is valid", errors, isEmpty());
         }
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityActionTest.java	(revision 10467)
@@ -6,7 +6,6 @@
 import static org.junit.Assert.assertTrue;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
@@ -14,4 +13,7 @@
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.layer.TMSLayerTest;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -19,12 +21,10 @@
  */
 public class LayerVisibilityActionTest {
-
     /**
-     * Setup tests
+     * TMS layer needs prefs. Platform for LayerListDialog shortcuts.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().projection().platform();
 
     /**
@@ -34,59 +34,60 @@
     public void testLayerVisibilityAction() {
         TMSLayer layer = TMSLayerTest.createTmsLayer();
-        try {
-            LayerListModel model = LayerListDialog.getInstance().getModel();
-            LayerVisibilityAction action = new LayerVisibilityAction(model);
-            action.updateEnabledState();
-            assertFalse(action.isEnabled());
+        LayerListModel model = new LayerListDialog(Main.getLayerManager()) {
+            @Override
+            protected void registerInWindowMenu() {
+                // ignore
+            }
+        }.getModel();
+        LayerVisibilityAction action = new LayerVisibilityAction(model);
+        action.updateEnabledState();
+        assertFalse(action.isEnabled());
 
-            Main.getLayerManager().addLayer(layer);
-            action.updateEnabledState();
-            assertTrue(action.isEnabled());
-            assertTrue(action.supportLayers(model.getSelectedLayers()));
+        Main.getLayerManager().addLayer(layer);
+        model.setSelectedLayer(layer);
+        action.updateEnabledState();
+        assertTrue(action.isEnabled());
+        assertTrue(action.supportLayers(model.getSelectedLayers()));
 
-            // now check values
-            action.updateValues();
-            assertEquals(1.0, action.opacitySlider.getRealValue(), 1e-15);
-            assertEquals("OpacitySlider [getRealValue()=1.0]", action.opacitySlider.toString());
+        // now check values
+        action.updateValues();
+        assertEquals(1.0, action.opacitySlider.getRealValue(), 1e-15);
+        assertEquals("OpacitySlider [getRealValue()=1.0]", action.opacitySlider.toString());
 
-            action.opacitySlider.setRealValue(.5);
-            action.updateValues();
+        action.opacitySlider.setRealValue(.5);
+        action.updateValues();
 
-            assertEquals(0.5, action.opacitySlider.getRealValue(), 1e-15);
-            assertEquals("OpacitySlider [getRealValue()=0.5]", action.opacitySlider.toString());
+        assertEquals(0.5, action.opacitySlider.getRealValue(), 1e-15);
+        assertEquals("OpacitySlider [getRealValue()=0.5]", action.opacitySlider.toString());
 
-            action.setVisibleFlag(false);
-            action.updateValues();
-            assertFalse(layer.isVisible());
+        action.setVisibleFlag(false);
+        action.updateValues();
+        assertFalse(layer.isVisible());
 
-            action.setVisibleFlag(true);
-            action.updateValues();
-            assertTrue(layer.isVisible());
+        action.setVisibleFlag(true);
+        action.updateValues();
+        assertTrue(layer.isVisible());
 
-            // layer stays visible during adjust
-            action.opacitySlider.setValueIsAdjusting(true);
-            action.opacitySlider.setRealValue(0);
-            assertEquals(0, layer.getOpacity(), 1e-15);
-            layer.setOpacity(.1); // to make layer.isVisible work
-            assertTrue(layer.isVisible());
-            layer.setOpacity(0);
+        // layer stays visible during adjust
+        action.opacitySlider.setValueIsAdjusting(true);
+        action.opacitySlider.setRealValue(0);
+        assertEquals(0, layer.getOpacity(), 1e-15);
+        layer.setOpacity(.1); // to make layer.isVisible work
+        assertTrue(layer.isVisible());
+        layer.setOpacity(0);
 
-            action.opacitySlider.setValueIsAdjusting(false);
-            action.opacitySlider.setRealValue(0);
-            assertEquals(0, layer.getOpacity(), 1e-15);
-            layer.setOpacity(.1); // to make layer.isVisible work
-            assertFalse(layer.isVisible());
-            layer.setOpacity(0);
-            action.updateValues();
+        action.opacitySlider.setValueIsAdjusting(false);
+        action.opacitySlider.setRealValue(0);
+        assertEquals(0, layer.getOpacity(), 1e-15);
+        layer.setOpacity(.1); // to make layer.isVisible work
+        assertFalse(layer.isVisible());
+        layer.setOpacity(0);
+        action.updateValues();
 
-            // Opacity reset when it was 0 and user set layer to visible.
-            action.setVisibleFlag(true);
-            action.updateValues();
-            assertEquals(1.0, action.opacitySlider.getRealValue(), 1e-15);
-            assertEquals(1.0, layer.getOpacity(), 1e-15);
-
-        } finally {
-            Main.getLayerManager().removeLayer(layer);
-        }
+        // Opacity reset when it was 0 and user set layer to visible.
+        action.setVisibleFlag(true);
+        action.updateValues();
+        assertEquals(1.0, action.opacitySlider.getRealValue(), 1e-15);
+        assertEquals(1.0, layer.getOpacity(), 1e-15);
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/GpxLayerTest.java	(revision 10467)
@@ -11,4 +11,5 @@
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.TimeZone;
 
 import javax.swing.JScrollPane;
@@ -171,4 +172,7 @@
                 new ImmutableGpxTrack(new ArrayList<Collection<WayPoint>>(), new HashMap<String, Object>())));
 
+        assertEquals("1/3/16 11:59 AM - 12:00 PM (0:00)", GpxLayer.getTimespanForTrack(getMinimalGpxData().tracks.iterator().next()));
+
+        TimeZone.setDefault(TimeZone.getTimeZone("Europe/Berlin"));
         assertEquals("1/3/16 12:59 PM - 1:00 PM (0:00)", GpxLayer.getTimespanForTrack(getMinimalGpxData().tracks.iterator().next()));
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/LayerManagerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/LayerManagerTest.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/LayerManagerTest.java	(revision 10467)
@@ -11,4 +11,6 @@
 import static org.junit.Assert.fail;
 
+import java.awt.Component;
+import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.lang.reflect.InvocationTargetException;
@@ -41,6 +43,13 @@
 public class LayerManagerTest {
 
-    protected static class AbstractTestLayer extends Layer {
-        protected AbstractTestLayer() {
+    /**
+     * This is a layer that can be used in tests. It does not do anything and provides a simple, fake implementation.
+     * @author Michael Zangl
+     */
+    public static class TestLayer extends Layer {
+        /**
+         * Create a new test layer.
+         */
+        public TestLayer() {
             super("Test Layer");
         }
@@ -70,5 +79,5 @@
         @Override
         public Action[] getMenuEntries() {
-            return null;
+            return new Action[0];
         }
 
@@ -80,5 +89,20 @@
         @Override
         public Icon getIcon() {
-            return null;
+            return new Icon() {
+                @Override
+                public void paintIcon(Component c, Graphics g, int x, int y) {
+                    // nop
+                }
+
+                @Override
+                public int getIconWidth() {
+                    return 10;
+                }
+
+                @Override
+                public int getIconHeight() {
+                    return 10;
+                }
+            };
         }
 
@@ -89,5 +113,5 @@
     }
 
-    protected static class AbstractTestLayer2 extends AbstractTestLayer {}
+    protected static class TestLayer2 extends TestLayer {}
 
     /**
@@ -147,5 +171,5 @@
     @Test
     public void testAddLayer() {
-        Layer layer1 = new AbstractTestLayer() {
+        Layer layer1 = new TestLayer() {
             @Override
             public LayerPositionStrategy getDefaultLayerPosition() {
@@ -158,5 +182,5 @@
             }
         };
-        Layer layer2 = new AbstractTestLayer() {
+        Layer layer2 = new TestLayer() {
             @Override
             public LayerPositionStrategy getDefaultLayerPosition() {
@@ -164,5 +188,5 @@
             }
         };
-        Layer layer3 = new AbstractTestLayer() {
+        Layer layer3 = new TestLayer() {
             @Override
             public LayerPositionStrategy getDefaultLayerPosition() {
@@ -179,5 +203,5 @@
 
         // event
-        AbstractTestLayer layer4 = new AbstractTestLayer();
+        TestLayer layer4 = new TestLayer();
         CapturingLayerChangeListener l = new CapturingLayerChangeListener();
         layerManager.addLayerChangeListener(l);
@@ -198,5 +222,5 @@
         thrown.expectRootCause(any(IllegalArgumentException.class));
 
-        AbstractTestLayer layer1 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
         layerManager.addLayer(layer1);
         layerManager.addLayer(layer1);
@@ -212,5 +236,5 @@
         thrown.expectRootCause(any(IndexOutOfBoundsException.class));
 
-        AbstractTestLayer layer1 = new AbstractTestLayer() {
+        TestLayer layer1 = new TestLayer() {
             @Override
             public LayerPositionStrategy getDefaultLayerPosition() {
@@ -231,6 +255,6 @@
     @Test
     public void testRemoveLayer() {
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestLayer layer2 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        TestLayer layer2 = new TestLayer();
         layerManager.addLayer(layer1);
         layerManager.addLayer(layer2);
@@ -252,6 +276,6 @@
     @Test
     public void testMoveLayer() {
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestLayer layer2 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        TestLayer layer2 = new TestLayer();
         layerManager.addLayer(layer1);
         layerManager.addLayer(layer2);
@@ -284,6 +308,6 @@
         thrown.expectRootCause(any(IndexOutOfBoundsException.class));
 
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestLayer layer2 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        TestLayer layer2 = new TestLayer();
         layerManager.addLayer(layer1);
         layerManager.addLayer(layer2);
@@ -300,6 +324,6 @@
         thrown.expectRootCause(any(IllegalArgumentException.class));
 
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestLayer layer2 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        TestLayer layer2 = new TestLayer();
         layerManager.addLayer(layer1);
         layerManager.moveLayer(layer2, 0);
@@ -312,6 +336,6 @@
     public void testGetLayers() {
         // list should be immutable
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestLayer layer2 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        TestLayer layer2 = new TestLayer();
         layerManager.addLayer(layer1);
         layerManager.addLayer(layer2);
@@ -324,11 +348,11 @@
     @Test
     public void testGetLayersOfType() {
-        AbstractTestLayer2 layer1 = new AbstractTestLayer2();
-        AbstractTestLayer2 layer2 = new AbstractTestLayer2();
-        layerManager.addLayer(layer1);
-        layerManager.addLayer(new AbstractTestLayer());
-        layerManager.addLayer(layer2);
-
-        assertEquals(layerManager.getLayersOfType(AbstractTestLayer2.class), Arrays.asList(layer1, layer2));
+        TestLayer2 layer1 = new TestLayer2();
+        TestLayer2 layer2 = new TestLayer2();
+        layerManager.addLayer(layer1);
+        layerManager.addLayer(new TestLayer());
+        layerManager.addLayer(layer2);
+
+        assertEquals(layerManager.getLayersOfType(TestLayer2.class), Arrays.asList(layer1, layer2));
     }
 
@@ -338,10 +362,10 @@
     @Test
     public void testContainsLayer() {
-        AbstractTestLayer layer = new AbstractTestLayer();
+        TestLayer layer = new TestLayer();
         layerManager.addLayer(layer);
-        layerManager.addLayer(new AbstractTestLayer());
+        layerManager.addLayer(new TestLayer());
 
         assertTrue(layerManager.containsLayer(layer));
-        assertFalse(layerManager.containsLayer(new AbstractTestLayer()));
+        assertFalse(layerManager.containsLayer(new TestLayer()));
     }
 
@@ -374,6 +398,6 @@
     public void testAddLayerChangeListenerFire() {
         final ArrayList<Layer> fired = new ArrayList<>();
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestLayer layer2 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        TestLayer layer2 = new TestLayer();
         layerManager.addLayer(layer1);
         layerManager.addLayer(layer2);
@@ -405,7 +429,7 @@
         CapturingLayerChangeListener l = new CapturingLayerChangeListener();
         layerManager.addLayerChangeListener(l);
-        layerManager.addLayer(new AbstractTestLayer());
+        layerManager.addLayer(new TestLayer());
         layerManager.removeLayerChangeListener(l);
-        layerManager.addLayer(new AbstractTestLayer());
+        layerManager.addLayer(new TestLayer());
         // threw exception when fired twice.
         assertNotNull(l.layerAdded);
@@ -429,6 +453,6 @@
     public void testRemoveLayerChangeListenerFire() {
         final ArrayList<Layer> fired = new ArrayList<>();
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestLayer layer2 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        TestLayer layer2 = new TestLayer();
         layerManager.addLayer(layer1);
         layerManager.addLayer(layer2);
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/MainLayerManagerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/MainLayerManagerTest.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/MainLayerManagerTest.java	(revision 10467)
@@ -68,7 +68,7 @@
     @Test
     public void testAddLayerSetsActiveLayer() {
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestOsmLayer layer2 = new AbstractTestOsmLayer();
-        AbstractTestLayer layer3 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        AbstractTestOsmLayer layer2 = new AbstractTestOsmLayer();
+        TestLayer layer3 = new TestLayer();
         assertNull(layerManagerWithActive.getActiveLayer());
         assertNull(layerManagerWithActive.getEditLayer());
@@ -86,7 +86,7 @@
     @Test
     public void testRemoveLayerUnsetsActiveLayer() {
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestOsmLayer layer2 = new AbstractTestOsmLayer();
-        AbstractTestLayer layer3 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        AbstractTestOsmLayer layer2 = new AbstractTestOsmLayer();
+        TestLayer layer3 = new TestLayer();
         AbstractTestOsmLayer layer4 = new AbstractTestOsmLayer();
         layerManagerWithActive.addLayer(layer1);
@@ -116,5 +116,5 @@
     @Test
     public void testAddActiveLayerChangeListener() {
-        AbstractTestLayer layer1 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
         AbstractTestOsmLayer layer2 = new AbstractTestOsmLayer();
         layerManagerWithActive.addLayer(layer1);
@@ -154,5 +154,5 @@
     @Test
     public void testRemoveActiveLayerChangeListener() {
-        AbstractTestLayer layer1 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
         AbstractTestOsmLayer layer2 = new AbstractTestOsmLayer();
         layerManagerWithActive.addLayer(layer1);
@@ -182,6 +182,6 @@
     @Test
     public void testSetGetActiveLayer() {
-        AbstractTestLayer layer1 = new AbstractTestLayer();
-        AbstractTestLayer layer2 = new AbstractTestLayer();
+        TestLayer layer1 = new TestLayer();
+        TestLayer layer2 = new TestLayer();
         layerManagerWithActive.addLayer(layer1);
         layerManagerWithActive.addLayer(layer2);
@@ -200,5 +200,5 @@
     public void testGetEditDataSet() {
         assertNull(layerManagerWithActive.getEditDataSet());
-        AbstractTestLayer layer0 = new AbstractTestLayer();
+        TestLayer layer0 = new TestLayer();
         layerManagerWithActive.addLayer(layer0);
         assertNull(layerManagerWithActive.getEditDataSet());
@@ -223,8 +223,8 @@
         AbstractTestOsmLayer layer1 = new AbstractTestOsmLayer();
         AbstractTestOsmLayer layer2 = new AbstractTestOsmLayer();
-        AbstractTestLayer layer3 = new AbstractTestLayer();
+        TestLayer layer3 = new TestLayer();
         layer3.setVisible(false);
         AbstractTestOsmLayer layer4 = new AbstractTestOsmLayer();
-        AbstractTestLayer layer5 = new AbstractTestLayer();
+        TestLayer layer5 = new TestLayer();
         AbstractTestOsmLayer layer6 = new AbstractTestOsmLayer();
         AbstractTestOsmLayer layer7 = new AbstractTestOsmLayer();
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java	(revision 10467)
@@ -10,7 +10,6 @@
 import java.util.List;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
@@ -18,4 +17,7 @@
 import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer.Loader;
 import org.openstreetmap.josm.io.GpxReader;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -23,12 +25,11 @@
  */
 public class GeoImageLayerTest {
+    /**
+     * We need prefs for this.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
 
-    /**
-     * Setup test.
-     */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
 
     /**
@@ -42,26 +43,16 @@
             assertTrue(reader.parse(true));
             GpxLayer gpxLayer = new GpxLayer(reader.getGpxData());
-            try {
-                Main.getLayerManager().addLayer(gpxLayer);
-                assertEquals(1, Main.getLayerManager().getLayers().size());
-                new Loader(
-                        Collections.singleton(new File(TestUtils.getRegressionDataFile(12255, "G0016941.JPG"))),
-                        gpxLayer).run();
-                assertEquals(2, Main.getLayerManager().getLayers().size());
-                GeoImageLayer layer = Main.getLayerManager().getLayersOfType(GeoImageLayer.class).iterator().next();
-                try {
-                    assertEquals(gpxLayer, layer.getGpxLayer());
-                    List<ImageEntry> images = layer.getImages();
-                    assertEquals(1, images.size());
-                    assertEquals("<html>1 image loaded. 0 were found to be GPS tagged.</html>", layer.getInfoComponent());
-                    assertEquals("<html>1 image loaded. 0 were found to be GPS tagged.</html>", layer.getToolTipText());
-                } finally {
-                    // Ensure we clean the place before leaving, even if test fails.
-                    Main.getLayerManager().removeLayer(layer);
-                }
-            } finally {
-                // Ensure we clean the place before leaving, even if test fails.
-                Main.getLayerManager().removeLayer(gpxLayer);
-            }
+            Main.getLayerManager().addLayer(gpxLayer);
+            assertEquals(1, Main.getLayerManager().getLayers().size());
+            new Loader(
+                    Collections.singleton(new File(TestUtils.getRegressionDataFile(12255, "G0016941.JPG"))),
+                    gpxLayer).run();
+            assertEquals(2, Main.getLayerManager().getLayers().size());
+            GeoImageLayer layer = Main.getLayerManager().getLayersOfType(GeoImageLayer.class).iterator().next();
+            assertEquals(gpxLayer, layer.getGpxLayer());
+            List<ImageEntry> images = layer.getImages();
+            assertEquals(1, images.size());
+            assertEquals("<html>1 image loaded. 0 were found to be GPS tagged.</html>", layer.getInfoComponent());
+            assertEquals("<html>1 image loaded. 0 were found to be GPS tagged.</html>", layer.getToolTipText());
         }
     }
Index: trunk/test/unit/org/openstreetmap/josm/io/NmeaReaderTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/NmeaReaderTest.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/io/NmeaReaderTest.java	(revision 10467)
@@ -8,4 +8,5 @@
 import java.util.ArrayList;
 import java.util.List;
+import java.util.TimeZone;
 
 import org.junit.Test;
@@ -40,4 +41,5 @@
         assertEquals(0, in.getParserMalformed());
 
+        TimeZone.setDefault(TimeZone.getTimeZone("Europe/Berlin"));
         final List<WayPoint> wayPoints = new ArrayList<>(in.data.tracks.iterator().next().getSegments().iterator().next().getWayPoints());
         assertEquals("2016-01-25T04:05:09.200Z", wayPoints.get(0).get(GpxConstants.PT_TIME));
Index: trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 10462)
+++ trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 10467)
@@ -4,4 +4,5 @@
 import java.io.File;
 import java.io.IOException;
+import java.util.TimeZone;
 
 import org.junit.rules.DisableOnDebug;
@@ -163,4 +164,8 @@
         // Tests are running headless by default.
         System.setProperty("java.awt.headless", "true");
+        // All tests use the same timezone.
+        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
+        // Set log level to info
+        Main.logLevel = 3;
 
         // Set up i18n
