Index: /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 10442)
+++ /trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 10443)
@@ -2,4 +2,6 @@
 package org.openstreetmap.josm;
 
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -13,5 +15,4 @@
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.MainApplication;
-import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -132,11 +133,8 @@
             new MainApplication().initialize();
         }
-        if (Main.map == null) {
-            Main.main.createMapFrame(null, null);
-        } else {
-            for (Layer l: Main.getLayerManager().getLayers()) {
-                Main.getLayerManager().removeLayer(l);
-            }
-        }
+        Main.getLayerManager().resetState();
+        assertTrue(Main.getLayerManager().getLayers().isEmpty());
+        assertNull(Main.getLayerManager().getEditLayer());
+        assertNull(Main.getLayerManager().getActiveLayer());
     }
 }
Index: /trunk/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java	(revision 10442)
+++ /trunk/test/unit/org/openstreetmap/josm/actions/SelectByInternalPointActionTest.java	(revision 10443)
@@ -7,7 +7,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.data.coor.EastNorth;
@@ -19,4 +18,5 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 /**
@@ -28,8 +28,6 @@
      * Setup test.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    public JOSMTestRules rules = new JOSMTestRules().preferences().projection();
 
     /**
@@ -38,8 +36,5 @@
     @Test
     public void testNoDataSet() {
-        while (Main.main.hasEditLayer()) {
-            Main.getLayerManager().removeLayer(Main.getLayerManager().getEditLayer());
-        }
-        assertNull(JosmAction.getCurrentDataSet());
+        assertNull(Main.getLayerManager().getEditDataSet());
         assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(null).size());
         assertNull(SelectByInternalPointAction.getSmallestSurroundingObject(null));
@@ -78,14 +73,9 @@
     @Test
     public void testGetSurroundingObjects() {
-        Layer layer = initDataSet();
-        try {
-            assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(null).size());
-            assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(0, 0)).size());
-            assertEquals(1, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(1.5, 1.5)).size());
-            assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(3, 3)).size());
-        } finally {
-            // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
-        }
+        initDataSet();
+        assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(null).size());
+        assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(0, 0)).size());
+        assertEquals(1, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(1.5, 1.5)).size());
+        assertEquals(0, SelectByInternalPointAction.getSurroundingObjects(new EastNorth(3, 3)).size());
     }
 
@@ -95,12 +85,7 @@
     @Test
     public void testGetSmallestSurroundingObject() {
-        Layer layer = initDataSet();
-        try {
-            assertNull(SelectByInternalPointAction.getSmallestSurroundingObject(null));
-            assertNotNull(SelectByInternalPointAction.getSmallestSurroundingObject(new EastNorth(1.5, 1.5)));
-        } finally {
-            // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
-        }
+        initDataSet();
+        assertNull(SelectByInternalPointAction.getSmallestSurroundingObject(null));
+        assertNotNull(SelectByInternalPointAction.getSmallestSurroundingObject(new EastNorth(1.5, 1.5)));
     }
 
@@ -110,26 +95,21 @@
     @Test
     public void testPerformSelection() {
-        Layer layer = initDataSet();
-        try {
-            DataSet ds = JosmAction.getCurrentDataSet();
+        initDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
 
-            assertEquals(0, ds.getSelected().size());
-            SelectByInternalPointAction.performSelection(null, false, false);
-            assertEquals(0, ds.getSelected().size());
-            SelectByInternalPointAction.performSelection(new EastNorth(0, 0), false, false);
-            assertEquals(0, ds.getSelected().size());
-            SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), false, false);
-            assertEquals(1, ds.getSelected().size());
-            ds.clearSelection();
-            ds.addSelected(ds.getNodes());
-            assertEquals(4, ds.getSelected().size());
-            SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), true, false);
-            assertEquals(5, ds.getSelected().size());
-            SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), false, true);
-            assertEquals(4, ds.getSelected().size());
-        } finally {
-            // Ensure we clean the place before leaving, even if test fails.
-            Main.getLayerManager().removeLayer(layer);
-        }
+        assertEquals(0, ds.getSelected().size());
+        SelectByInternalPointAction.performSelection(null, false, false);
+        assertEquals(0, ds.getSelected().size());
+        SelectByInternalPointAction.performSelection(new EastNorth(0, 0), false, false);
+        assertEquals(0, ds.getSelected().size());
+        SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), false, false);
+        assertEquals(1, ds.getSelected().size());
+        ds.clearSelection();
+        ds.addSelected(ds.getNodes());
+        assertEquals(4, ds.getSelected().size());
+        SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), true, false);
+        assertEquals(5, ds.getSelected().size());
+        SelectByInternalPointAction.performSelection(new EastNorth(1.5, 1.5), false, true);
+        assertEquals(4, ds.getSelected().size());
     }
 }
Index: /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 10442)
+++ /trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java	(revision 10443)
@@ -157,4 +157,6 @@
      */
     protected void before() throws InitializationError {
+        cleanUpFromJosmFixture();
+
         // Tests are running headless by default.
         System.setProperty("java.awt.headless", "true");
@@ -212,4 +214,15 @@
 
     /**
+     * Clean up what test not using these test rules may have broken.
+     */
+    private void cleanUpFromJosmFixture() {
+        Main.getLayerManager().resetState();
+        Main.pref = null;
+        Main.platform = null;
+        Main.pref.put("osm-server.url", "invalid-server");
+        System.gc();
+    }
+
+    /**
      * Clean up after running a test
      */
