diff --git a/Code/Mantid/Framework/Algorithms/test/NormaliseByDetectorTest.h b/Code/Mantid/Framework/Algorithms/test/NormaliseByDetectorTest.h
index 7f9cbce7c88e6dca92f1198bca9a852d98af7593..3637b033b2640cb66e73434910d3f2ecb4f88166 100644
--- a/Code/Mantid/Framework/Algorithms/test/NormaliseByDetectorTest.h
+++ b/Code/Mantid/Framework/Algorithms/test/NormaliseByDetectorTest.h
@@ -523,58 +523,64 @@ private:
 
 public:
 
-  NormaliseByDetectorTestPerformance()
-  {
-    // Load some data
-    IAlgorithm* loadalg = FrameworkManager::Instance().createAlgorithm("Load");
-    loadalg->setRethrows(true);
-    loadalg->initialize();
-    loadalg->setPropertyValue("Filename", "POLREF00004699.nxs");
-    loadalg->setPropertyValue("OutputWorkspace", "testws");
-    loadalg->execute();
-    
-    // Convert units to wavelength
-    IAlgorithm* unitsalg = FrameworkManager::Instance().createAlgorithm("ConvertUnits");
-    unitsalg->initialize();
-    unitsalg->setPropertyValue("InputWorkspace", "testws");
-    unitsalg->setPropertyValue("OutputWorkspace", "testws");
-    unitsalg->setPropertyValue("Target", "Wavelength");
-    unitsalg->execute();
-
-    // Convert the specturm axis ot signed_theta
-    IAlgorithm* specaxisalg = FrameworkManager::Instance().createAlgorithm("ConvertSpectrumAxis");
-    specaxisalg->initialize();
-    specaxisalg->setPropertyValue("InputWorkspace", "testws");
-    specaxisalg->setPropertyValue("OutputWorkspace", "testws");
-    specaxisalg->setPropertyValue("Target", "signed_theta");
-    specaxisalg->execute();
-    
-    WorkspaceGroup_sptr wsGroup = API::AnalysisDataService::Instance().retrieveWS<WorkspaceGroup>("testws");
-    ws = boost::dynamic_pointer_cast<MatrixWorkspace>(wsGroup->getItem(0));
+  static NormaliseByDetectorTestPerformance *createSuite() { return new NormaliseByDetectorTestPerformance(); }
+  static void destroySuite( NormaliseByDetectorTestPerformance *suite ) { delete suite; }
 
-    const std::string instrumentName = ws->getInstrument()->getName();
-
-    // Create a parameter file, with a root equation that will apply to all detectors.
-    const std::string parameterFileContents =  boost::str(boost::format(
-      "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n\
-       <parameter-file instrument = \"%1%\" date = \"2012-01-31T00:00:00\">\n\
-          <component-link name=\"%1%\">\n\
-           <parameter name=\"LinearBackground:A0\" type=\"fitting\">\n\
-               <formula eq=\"1\" result-unit=\"Wavelength\"/>\n\
-               <fixed />\n\
-           </parameter>\n\
-           <parameter name=\"LinearBackground:A1\" type=\"fitting\">\n\
-               <formula eq=\"2\" result-unit=\"Wavelength\"/>\n\
-               <fixed />\n\
-           </parameter>\n\
-           </component-link>\n\
+  void setUp()
+  {
+    if(!ws)
+    {
+      // Load some data
+      IAlgorithm* loadalg = FrameworkManager::Instance().createAlgorithm("Load");
+      loadalg->setRethrows(true);
+      loadalg->initialize();
+      loadalg->setPropertyValue("Filename", "POLREF00004699.nxs");
+      loadalg->setPropertyValue("OutputWorkspace", "testws");
+      loadalg->execute();
+
+      // Convert units to wavelength
+      IAlgorithm* unitsalg = FrameworkManager::Instance().createAlgorithm("ConvertUnits");
+      unitsalg->initialize();
+      unitsalg->setPropertyValue("InputWorkspace", "testws");
+      unitsalg->setPropertyValue("OutputWorkspace", "testws");
+      unitsalg->setPropertyValue("Target", "Wavelength");
+      unitsalg->execute();
+
+      // Convert the specturm axis ot signed_theta
+      IAlgorithm* specaxisalg = FrameworkManager::Instance().createAlgorithm("ConvertSpectrumAxis");
+      specaxisalg->initialize();
+      specaxisalg->setPropertyValue("InputWorkspace", "testws");
+      specaxisalg->setPropertyValue("OutputWorkspace", "testws");
+      specaxisalg->setPropertyValue("Target", "signed_theta");
+      specaxisalg->execute();
+
+      WorkspaceGroup_sptr wsGroup = API::AnalysisDataService::Instance().retrieveWS<WorkspaceGroup>("testws");
+      ws = boost::dynamic_pointer_cast<MatrixWorkspace>(wsGroup->getItem(0));
+
+      const std::string instrumentName = ws->getInstrument()->getName();
+
+      // Create a parameter file, with a root equation that will apply to all detectors.
+      const std::string parameterFileContents =  boost::str(boost::format(
+        "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n\
+        <parameter-file instrument = \"%1%\" date = \"2012-01-31T00:00:00\">\n\
+        <component-link name=\"%1%\">\n\
+        <parameter name=\"LinearBackground:A0\" type=\"fitting\">\n\
+        <formula eq=\"1\" result-unit=\"Wavelength\"/>\n\
+        <fixed />\n\
+        </parameter>\n\
+        <parameter name=\"LinearBackground:A1\" type=\"fitting\">\n\
+        <formula eq=\"2\" result-unit=\"Wavelength\"/>\n\
+        <fixed />\n\
+        </parameter>\n\
+        </component-link>\n\
         </parameter-file>\n") % instrumentName);
 
-    // Create a temporary Instrument Parameter file.
-    FileObject file(parameterFileContents, instrumentName + "_Parameters.xml");
-    
-    // Apply parameter file to workspace.
-    apply_instrument_parameter_file_to_workspace(ws, file);
+      // Create a temporary Instrument Parameter file.
+      FileObject file(parameterFileContents, instrumentName + "_Parameters.xml");
+
+      // Apply parameter file to workspace.
+      apply_instrument_parameter_file_to_workspace(ws, file);
+    }
   }
 
   void testSequential()