diff --git a/README.md b/README.md
index 848ebdf7..845dce6d 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,10 @@ Project white has been inactive for some time, but still has many users and is a
 
 TestStack has brought this project into it's offering to try and breathe some life into Project White. 
 
+## Build Status
+[![Build status](https://ci.appveyor.com/api/projects/status/3nq9oblpevt0uu0l/branch/nunit?svg=true)](https://ci.appveyor.com/project/RomanBaeriswyl/white-9yaco/branch/nunit)
+[![Test status](http://flauschig.ch/batch.php?type=tests&account=RomanBaeriswyl&slug=white-9yaco)](https://ci.appveyor.com/project/RomanBaeriswyl/white-9yaco/branch/nunit)
+
 ## Contributing
 White needs contributors to keep improving. There is plenty to do:
 
diff --git a/RunUITests.cmd b/RunUITests.cmd
deleted file mode 100644
index 3285fc4b..00000000
--- a/RunUITests.cmd
+++ /dev/null
@@ -1,15 +0,0 @@
-@ECHO OFF
-
-SET msbuild="%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"
-
-IF '%1'=='' (SET configuration=Debug) ELSE (SET configuration=%1)
-IF '%2'=='' (SET platform="x86") ELSE (SET platform=%2)
-
-:: Build the solution. Override the platform to account for running
-:: from Visual Studio Tools command prompt (x64). Log quietly to the 
-:: console and verbosely to a file.
-%msbuild% White.msbuild /target:UITests /property:Platform=%platform% /property:Configuration=%configuration%
-
-IF NOT ERRORLEVEL 0 EXIT /B %ERRORLEVEL%
-
-pause
\ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 00000000..f13d32ac
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,12 @@
+version: 1.0.{build}
+init:
+- ps: 
+install:
+- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-desktop.ps1'))
+before_build:
+- cmd: nuget restore src\TestStack.White.sln
+build:
+  project: src\TestStack.White.sln
+  verbosity: minimal
+on_finish:
+- ps: if (Test-Path -path c:\FailedTestsScreenshots) { Get-ChildItem c:\FailedTestsScreenshots\*.* | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }}
\ No newline at end of file
diff --git a/src/.nuget/NuGet.Config b/src/.nuget/NuGet.Config
deleted file mode 100644
index 67f8ea04..00000000
--- a/src/.nuget/NuGet.Config
+++ /dev/null
@@ -1,6 +0,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <solution>
-    <add key="disableSourceControlIntegration" value="true" />
-  </solution>
-</configuration>
\ No newline at end of file
diff --git a/src/.nuget/NuGet.exe b/src/.nuget/NuGet.exe
deleted file mode 100644
index c41a0d0d..00000000
Binary files a/src/.nuget/NuGet.exe and /dev/null differ
diff --git a/src/.nuget/NuGet.targets b/src/.nuget/NuGet.targets
deleted file mode 100644
index 83fe9060..00000000
--- a/src/.nuget/NuGet.targets
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
-        
-        <!-- Enable the restore command to run before builds -->
-        <RestorePackages Condition="  '$(RestorePackages)' == '' ">false</RestorePackages>
-
-        <!-- Property that enables building a package from a project -->
-        <BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
-
-        <!-- Determines if package restore consent is required to restore packages -->
-        <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
-        
-        <!-- Download NuGet.exe if it does not already exist -->
-        <DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
-    </PropertyGroup>
-    
-    <ItemGroup Condition=" '$(PackageSources)' == '' ">
-        <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
-        <!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
-        <!--
-            <PackageSource Include="https://www.nuget.org/api/v2/" />
-            <PackageSource Include="https://my-nuget-source/nuget/" />
-        -->
-    </ItemGroup>
-
-    <PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
-        <!-- Windows specific commands -->
-        <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
-        <PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
-    </PropertyGroup>
-    
-    <PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
-        <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
-        <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
-        <PackagesConfig>packages.config</PackagesConfig>
-    </PropertyGroup>
-    
-    <PropertyGroup>
-        <!-- NuGet command -->
-        <NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
-        <PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
-        
-        <NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
-        <NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>
-
-        <PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
-        
-        <RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
-        <NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
-        
-        <PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
-        <PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
-
-        <!-- Commands -->
-        <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
-        <BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
-
-        <!-- We need to ensure packages are restored prior to assembly resolve -->
-        <BuildDependsOn Condition="$(RestorePackages) == 'true'">
-            RestorePackages;
-            $(BuildDependsOn);
-        </BuildDependsOn>
-
-        <!-- Make the build depend on restore packages -->
-        <BuildDependsOn Condition="$(BuildPackage) == 'true'">
-            $(BuildDependsOn);
-            BuildPackage;
-        </BuildDependsOn>
-    </PropertyGroup>
-
-    <Target Name="CheckPrerequisites">
-        <!-- Raise an error if we're unable to locate nuget.exe  -->
-        <Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
-        <!--
-        Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
-        This effectively acts as a lock that makes sure that the download operation will only happen once and all
-        parallel builds will have to wait for it to complete.
-        -->
-        <MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
-    </Target>
-
-    <Target Name="_DownloadNuGet">
-        <DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
-    </Target>
-
-    <Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
-        <Exec Command="$(RestoreCommand)"
-              Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
-              
-        <Exec Command="$(RestoreCommand)"
-              LogStandardErrorAsError="true"
-              Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
-    </Target>
-
-    <Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
-        <Exec Command="$(BuildCommand)" 
-              Condition=" '$(OS)' != 'Windows_NT' " />
-              
-        <Exec Command="$(BuildCommand)"
-              LogStandardErrorAsError="true"
-              Condition=" '$(OS)' == 'Windows_NT' " />
-    </Target>
-    
-    <UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
-        <ParameterGroup>
-            <OutputFilename ParameterType="System.String" Required="true" />
-        </ParameterGroup>
-        <Task>
-            <Reference Include="System.Core" />
-            <Using Namespace="System" />
-            <Using Namespace="System.IO" />
-            <Using Namespace="System.Net" />
-            <Using Namespace="Microsoft.Build.Framework" />
-            <Using Namespace="Microsoft.Build.Utilities" />
-            <Code Type="Fragment" Language="cs">
-                <![CDATA[
-                try {
-                    OutputFilename = Path.GetFullPath(OutputFilename);
-
-                    Log.LogMessage("Downloading latest version of NuGet.exe...");
-                    WebClient webClient = new WebClient();
-                    webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
-
-                    return true;
-                }
-                catch (Exception ex) {
-                    Log.LogErrorFromException(ex);
-                    return false;
-                }
-            ]]>
-            </Code>
-        </Task>
-    </UsingTask>
-</Project>
\ No newline at end of file
diff --git a/src/.nuget/packages.config b/src/.nuget/packages.config
deleted file mode 100644
index 2cf735d9..00000000
--- a/src/.nuget/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="GitReleaseNotes" version="0.4.0" />
-</packages>
\ No newline at end of file
diff --git a/src/Samples/Todo.Core/Todo.Core.csproj b/src/Samples/Todo.Core/Todo.Core.csproj
index 5ed5e3f5..b21b611c 100644
--- a/src/Samples/Todo.Core/Todo.Core.csproj
+++ b/src/Samples/Todo.Core/Todo.Core.csproj
@@ -12,7 +12,6 @@
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <NuGetPackageImportStamp>69a6bdb9</NuGetPackageImportStamp>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
@@ -55,14 +54,7 @@
     <Compile Include="NotifyPropertyChanged.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <Import Project="..\..\packages\Fody.1.24.0\build\Fody.targets" Condition="Exists('..\..\packages\Fody.1.24.0\build\Fody.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\packages\Fody.1.24.0\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Fody.1.24.0\build\Fody.targets'))" />
-  </Target>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
@@ -70,4 +62,5 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
+
diff --git a/src/Samples/Wpf/WpfTodo.UITests/Screens/UITestBase.cs b/src/Samples/Wpf/WpfTodo.UITests/Screens/UITestBase.cs
index 2b3f4ec4..acc48324 100644
--- a/src/Samples/Wpf/WpfTodo.UITests/Screens/UITestBase.cs
+++ b/src/Samples/Wpf/WpfTodo.UITests/Screens/UITestBase.cs
@@ -11,7 +11,7 @@ public abstract class UITestBase : IDisposable
 
         protected UITestBase()
         {
-            var directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
+            var directoryName = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath);
             var markpadLocation = Path.Combine(directoryName, @"WpfTodo.exe");
             Application = Application.Launch(markpadLocation);
         }
diff --git a/src/Samples/Wpf/WpfTodo.UITests/TodoAppTests.cs b/src/Samples/Wpf/WpfTodo.UITests/TodoAppTests.cs
index edb2b029..6889da44 100644
--- a/src/Samples/Wpf/WpfTodo.UITests/TodoAppTests.cs
+++ b/src/Samples/Wpf/WpfTodo.UITests/TodoAppTests.cs
@@ -1,27 +1,30 @@
-﻿using System;
+﻿using NUnit.Framework;
+using System;
 using System.IO;
 using System.Linq;
 using System.Reflection;
+using TestStack.White.Configuration;
 using TestStack.White.Factory;
 using TestStack.White.ScreenObjects.Services;
 using TestStack.White.ScreenObjects.Sessions;
 using WpfTodo.UITests.Screens;
-using Xunit;
 
 namespace WpfTodo.UITests
 {
+    [TestFixture]
     public class TodoAppTests : UITestBase
     {
-        [Fact]
-        public void Automate()
+        [Test]
+        public void AutomateTest()
         {
-            var workConfiguration =
-                new WorkConfiguration
-                {
-                    ArchiveLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
-                    Name = "WpfTodo"
-                };
+            var workPath = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath);
+            var workConfiguration = new WorkConfiguration
+            {
+                ArchiveLocation = workPath,
+                Name = "WpfTodo"
+            };
 
+            CoreAppXmlConfiguration.Instance.WorkSessionLocation = new DirectoryInfo(workPath);
             using (var workSession = new WorkSession(workConfiguration, new NullWorkEnvironment()))
             {
                 var screenRepository = workSession.Attach(Application);
@@ -36,8 +39,8 @@ public void Automate()
                 newTaskScreen.Create();
 
                 var tasks = mainWindow.Tasks.ToList();
-                Assert.Equal(1, tasks.Count);
-                Assert.Equal(title, tasks[0].Title);
+                Assert.That(tasks, Has.Count.EqualTo(1));
+                Assert.That(tasks[0].Title, Is.EqualTo(title));
             }
         }
     }
diff --git a/src/Samples/Wpf/WpfTodo.UITests/WpfTodo.UITests.csproj b/src/Samples/Wpf/WpfTodo.UITests/WpfTodo.UITests.csproj
index 209dc265..713a044b 100644
--- a/src/Samples/Wpf/WpfTodo.UITests/WpfTodo.UITests.csproj
+++ b/src/Samples/Wpf/WpfTodo.UITests/WpfTodo.UITests.csproj
@@ -12,7 +12,6 @@
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
     <DebugSymbols>true</DebugSymbols>
@@ -33,16 +32,13 @@
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Castle.Core">
-      <HintPath>..\..\..\packages\Castle.Core.3.3.0\lib\net40-client\Castle.Core.dll</HintPath>
+    <Reference Include="nunit.framework">
+      <HintPath>..\..\..\packages\NUnit.3.0.1\lib\net40\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
     <Reference Include="UIAutomationClient" />
     <Reference Include="UIAutomationTypes" />
-    <Reference Include="xunit">
-      <HintPath>..\..\..\packages\xunit.1.9.2\lib\net20\xunit.dll</HintPath>
-    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -53,10 +49,6 @@
     <Compile Include="TodoAppTests.cs" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\..\TestStack.White.Reporting\TestStack.White.Reporting.csproj">
-      <Project>{19FC2A6E-1C39-4DB8-AABF-A234FD6BC3FE}</Project>
-      <Name>TestStack.White.Reporting</Name>
-    </ProjectReference>
     <ProjectReference Include="..\..\..\TestStack.White.ScreenObjects\TestStack.White.ScreenObjects.csproj">
       <Project>{FCD3E92F-FEE9-414D-A460-09F7F685B83E}</Project>
       <Name>TestStack.White.ScreenObjects</Name>
@@ -77,8 +69,10 @@
   <ItemGroup>
     <None Include="packages.config" />
   </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
@@ -86,4 +80,5 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
+
diff --git a/src/Samples/Wpf/WpfTodo.UITests/packages.config b/src/Samples/Wpf/WpfTodo.UITests/packages.config
index 3c0c3570..82ba4df5 100644
--- a/src/Samples/Wpf/WpfTodo.UITests/packages.config
+++ b/src/Samples/Wpf/WpfTodo.UITests/packages.config
@@ -1,5 +1,4 @@
 ﻿<?xml version="1.0" encoding="utf-8"?>
 <packages>
-  <package id="Castle.Core" version="3.3.0" targetFramework="net40" />
-  <package id="xunit" version="1.9.2" targetFramework="net40" />
+  <package id="NUnit" version="3.0.1" targetFramework="net40" />
 </packages>
\ No newline at end of file
diff --git a/src/Samples/Wpf/WpfTodo/WpfTodo.csproj b/src/Samples/Wpf/WpfTodo/WpfTodo.csproj
index 511c833c..9abb3ef3 100644
--- a/src/Samples/Wpf/WpfTodo/WpfTodo.csproj
+++ b/src/Samples/Wpf/WpfTodo/WpfTodo.csproj
@@ -14,7 +14,6 @@
     <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <WarningLevel>4</WarningLevel>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <NuGetPackageImportStamp>a50d3576</NuGetPackageImportStamp>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
@@ -119,14 +118,7 @@
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <Import Project="..\..\..\packages\Fody.1.24.0\build\Fody.targets" Condition="Exists('..\..\..\packages\Fody.1.24.0\build\Fody.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('..\..\..\packages\Fody.1.24.0\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Fody.1.24.0\build\Fody.targets'))" />
-  </Target>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
@@ -134,4 +126,5 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
+
diff --git a/src/TestStack.White.Reporting/TestStack.White.Reporting.csproj b/src/TestStack.White.Reporting/TestStack.White.Reporting.csproj
index 30bde0e1..ede5ba94 100644
--- a/src/TestStack.White.Reporting/TestStack.White.Reporting.csproj
+++ b/src/TestStack.White.Reporting/TestStack.White.Reporting.csproj
@@ -36,7 +36,6 @@
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
@@ -107,7 +106,6 @@
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
@@ -115,4 +113,5 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
+
diff --git a/src/TestStack.White.ScreenObjects.UITests/EntityMapping/EntitiesFromUIItemsTest.cs b/src/TestStack.White.ScreenObjects.UITests/EntityMapping/EntitiesFromUIItemsTest.cs
index af7bfc99..85b660ad 100644
--- a/src/TestStack.White.ScreenObjects.UITests/EntityMapping/EntitiesFromUIItemsTest.cs
+++ b/src/TestStack.White.ScreenObjects.UITests/EntityMapping/EntitiesFromUIItemsTest.cs
@@ -1,13 +1,14 @@
+using NUnit.Framework;
 using System;
 using TestStack.White.ScreenObjects.EntityMapping;
 using TestStack.White.UIItems.TableItems;
 using TestStack.White.UIItems.WindowItems;
 using TestStack.White.UITests.Infrastructure;
 using TestStack.White.UnitTests.Repository.EntityMapping;
-using Xunit;
 
 namespace TestStack.White.ScreenObjects.UITests.EntityMapping
 {
+    [TestFixture]
     public class EntitiesFromUIItemsTest : IDisposable
     {
         private readonly Application application;
@@ -16,16 +17,17 @@ public class EntitiesFromUIItemsTest : IDisposable
         public EntitiesFromUIItemsTest()
         {
             application = new WinformsTestConfiguration().LaunchApplication();
-            window = application.GetWindow("Form1");
+            window = application.GetWindow("MainWindow");
         }
 
-        [Fact]
+        [Test]
         public void FromTable()
         {
-            var table = window.Get<Table>("people");
+            window.Tabs[0].SelectTabPage(3);
+            var table = window.Get<Table>("DataGrid");
             var entities = new Entities<Cricketer>(table);
-            Assert.Equal(entities.Count, table.Rows.Count);
-            Assert.Equal("Imran", entities[0].Name);
+            Assert.That(entities, Has.Count.EqualTo(table.Rows.Count));
+            Assert.That(entities[0].Name, Is.EqualTo("Imran"));
         }
 
         public void Dispose()
diff --git a/src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTester.cs b/src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTester.cs
index 4d8e629e..dca7e70a 100644
--- a/src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTester.cs
+++ b/src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTester.cs
@@ -14,7 +14,8 @@ public virtual MainScreen SetUp(InitializeOption initializeOption)
         {
             application = new WinformsTestConfiguration().LaunchApplication();
             var screenRepository = new ScreenRepository(application.ApplicationSession);
-            mainScreen = screenRepository.Get<MainScreen>("Form1", initializeOption);
+            mainScreen = screenRepository.Get<MainScreen>("MainWindow", initializeOption);
+            //mainScreen.Tabs[0].SelectTabPage(2);
             return mainScreen;
         }
 
diff --git a/src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTest.cs b/src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTests.cs
similarity index 67%
rename from src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTest.cs
rename to src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTests.cs
index 741f5d34..942ca4d3 100644
--- a/src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTest.cs
+++ b/src/TestStack.White.ScreenObjects.UITests/ScreenRepositoryTests.cs
@@ -1,33 +1,35 @@
+using NUnit.Framework;
 using TestStack.White.Factory;
-using Xunit;
 
 namespace TestStack.White.ScreenObjects.UITests
 {
-    public class ScreenRepositoryTest
+    [TestFixture]
+    [Ignore("Not sure how this is supposed to work")]
+    public class ScreenRepositoryTests
     {
         readonly ScreenRepositoryTester screenRepositoryTester;
 
-        public ScreenRepositoryTest()
+        public ScreenRepositoryTests()
         {
             screenRepositoryTester = new ScreenRepositoryTester();
         }
 
-        [Fact]
-        public void TestGetForCachedMode()
+        [Test]
+        public void TestGetForCachedModeTest()
         {
             screenRepositoryTester.SetUp(InitializeOption.NoCache);
             screenRepositoryTester.Get();
         }
 
-        [Fact]
-        public void ControlsWithSameNameAreResolvedUsingIndex()
+        [Test]
+        public void ControlsWithSameNameAreResolvedUsingIndexTest()
         {
             screenRepositoryTester.SetUp(InitializeOption.NoCache);
             screenRepositoryTester.ControlsWithSameNameAreResolvedUsingIndex();
         }
 
-        [Fact]
-        public void ComponentsAreInjected()
+        [Test]
+        public void ComponentsAreInjectedTest()
         {
             screenRepositoryTester.SetUp(InitializeOption.NoCache);
             screenRepositoryTester.ComponentsAreInjected();
diff --git a/src/TestStack.White.ScreenObjects.UITests/TestStack.White.ScreenObjects.UITests.csproj b/src/TestStack.White.ScreenObjects.UITests/TestStack.White.ScreenObjects.UITests.csproj
index 85bada6d..2e5a5970 100644
--- a/src/TestStack.White.ScreenObjects.UITests/TestStack.White.ScreenObjects.UITests.csproj
+++ b/src/TestStack.White.ScreenObjects.UITests/TestStack.White.ScreenObjects.UITests.csproj
@@ -33,7 +33,6 @@
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
@@ -55,29 +54,22 @@
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Castle.Core">
-      <HintPath>..\packages\Castle.Core.3.3.0\lib\net40-client\Castle.Core.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
-    <Reference Include="NSubstitute, Version=1.6.1.0, Culture=neutral, PublicKeyToken=92dd2e9066daa5ca, processorArchitecture=MSIL">
+    <Reference Include="nunit.framework, Version=3.0.5813.39032, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\NSubstitute.1.7.2.0\lib\NET40\NSubstitute.dll</HintPath>
+      <HintPath>..\packages\NUnit.3.0.1\lib\net40\nunit.framework.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
     <Reference Include="UIAutomationClient" />
-    <Reference Include="xunit">
-      <HintPath>..\packages\xunit.1.9.2\lib\net20\xunit.dll</HintPath>
-    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="DummyScreen.cs" />
     <Compile Include="DummyWindow.cs" />
     <Compile Include="EntityMapping\EntitiesFromUIItemsTest.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ScreenRepositoryTest.cs" />
+    <Compile Include="ScreenRepositoryTests.cs" />
     <Compile Include="ScreenRepositoryTester.cs" />
     <Compile Include="Testing\BaseScreen.cs" />
     <Compile Include="Testing\MainProgressBars.cs" />
@@ -100,9 +92,13 @@
     <None Include="packages.config" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\TestApplications\WinFormsTestApp\WinFormsTestApp.Old.csproj">
-      <Project>{bdd325ef-d400-4a37-b4c6-d7bf150587c7}</Project>
-      <Name>WinFormsTestApp.Old</Name>
+    <ProjectReference Include="..\TestApplications\WindowsFormsTestApplication\WindowsFormsTestApplication.csproj">
+      <Project>{24929ce3-4000-4600-8830-503be6a2ba42}</Project>
+      <Name>WindowsFormsTestApplication</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\TestApplications\WpfTestApplication\WpfTestApplication.csproj">
+      <Project>{492e6340-32cc-4d03-a9c4-36fb4c40cf5c}</Project>
+      <Name>WpfTestApplication</Name>
     </ProjectReference>
     <ProjectReference Include="..\TestStack.White.UITests\TestStack.White.UITests.csproj">
       <Project>{10A51741-09F8-47CA-AB94-965EE71342F7}</Project>
@@ -121,8 +117,10 @@
       <Name>TestStack.White.ScreenObjects</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/TestStack.White.ScreenObjects.UITests/Testing/BaseScreen.cs b/src/TestStack.White.ScreenObjects.UITests/Testing/BaseScreen.cs
index e5a0f35b..5b3bb0a7 100644
--- a/src/TestStack.White.ScreenObjects.UITests/Testing/BaseScreen.cs
+++ b/src/TestStack.White.ScreenObjects.UITests/Testing/BaseScreen.cs
@@ -5,7 +5,7 @@ namespace TestStack.White.ScreenObjects.UITests.Testing
 {
     public class BaseScreen : AppScreen
     {
-        protected Button buton = null;
+        protected Button Button = null;
 
         public BaseScreen(Window window, ScreenRepository screenRepository) : base(window, screenRepository) { }
     }
diff --git a/src/TestStack.White.ScreenObjects.UITests/Testing/MainProgressBars.cs b/src/TestStack.White.ScreenObjects.UITests/Testing/MainProgressBars.cs
index cae5080d..2655a3b4 100644
--- a/src/TestStack.White.ScreenObjects.UITests/Testing/MainProgressBars.cs
+++ b/src/TestStack.White.ScreenObjects.UITests/Testing/MainProgressBars.cs
@@ -1,6 +1,6 @@
+using NUnit.Framework;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.WindowItems;
-using Xunit;
 
 namespace TestStack.White.ScreenObjects.UITests.Testing
 {
@@ -9,11 +9,12 @@ public class MainProgressBars : AppScreenComponent
         protected ProgressBar ProgressBar;
 
         protected MainProgressBars() {}
+
         public MainProgressBars(Window window, ScreenRepository screenRepository) : base(window, screenRepository) {}
 
         public virtual void Check()
         {
-            Assert.Equal(50, ProgressBar.Value);
+            Assert.That(ProgressBar.Value, Is.EqualTo(50));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.ScreenObjects.UITests/Testing/MainScreen.cs b/src/TestStack.White.ScreenObjects.UITests/Testing/MainScreen.cs
index 770f1315..0ec3dbfe 100644
--- a/src/TestStack.White.ScreenObjects.UITests/Testing/MainScreen.cs
+++ b/src/TestStack.White.ScreenObjects.UITests/Testing/MainScreen.cs
@@ -1,3 +1,4 @@
+using NUnit.Framework;
 using System;
 using TestStack.White.Factory;
 using TestStack.White.ScreenObjects.ScreenAttributes;
@@ -6,7 +7,6 @@
 using TestStack.White.UIItems.TabItems;
 using TestStack.White.UIItems.TreeItems;
 using TestStack.White.UIItems.WindowItems;
-using Xunit;
 
 namespace TestStack.White.ScreenObjects.UITests.Testing
 {
@@ -43,31 +43,31 @@ public MainScreen(Window window, ScreenRepository screenRepository) : base(windo
 
         public virtual void ClickButton()
         {
-            buton.Click();
-            Assert.Equal("Button Clicked", result.Text);
+            Button.Click();
+            Assert.That(result.Text, Is.EqualTo("Button Clicked"));
         }
 
         public virtual void EnterText()
         {
             textBox.Text = "abcd";
-            Assert.Equal("abcd", textBox.Text);
-            Assert.Equal("Text changed", result.Text);
+            Assert.That(textBox.Text, Is.EqualTo("abcd"));
+            Assert.That(result.Text, Is.EqualTo("Text changed"));
         }
 
         public virtual void SelectComboBoxItem()
         {
             komboBox.Select("Arundhati Roy");
-            Assert.Equal("Arundhati Roy", komboBox.SelectedItemText);
+            Assert.That(komboBox.SelectedItemText, Is.EqualTo("Arundhati Roy"));
             komboBox.Select("Noam Chomsky");
-            Assert.Equal("Noam Chomsky", komboBox.SelectedItemText);
+            Assert.That(komboBox.SelectedItemText, Is.EqualTo("Noam Chomsky"));
         }
 
         public virtual void EnterTextInTheTextBoxesWithSameNameUsingIndex()
         {
             myNameIsDuplicateBox.Text = "one";
-            Assert.Equal("one", myNameIsDuplicateBox.Text);
+            Assert.That(myNameIsDuplicateBox.Text, Is.EqualTo("one"));
             iAmDuplicateBox.Text = "two";
-            Assert.Equal("two", iAmDuplicateBox.Text);
+            Assert.That(iAmDuplicateBox.Text, Is.EqualTo("two"));
         }
 
         public virtual void SelectTab()
@@ -78,49 +78,49 @@ public virtual void SelectTab()
         public virtual void SelectCheckbox()
         {
             chequeBox.Checked = true;
-            Assert.Equal(true, chequeBox.Checked);
+            Assert.That(chequeBox.Checked, Is.True);
             chequeBox.Checked = false;
-            Assert.Equal(false, chequeBox.Checked);
+            Assert.That(chequeBox.Checked, Is.False);
         }
 
         public virtual void SelectItemInChequedListBox()
         {
             chequedListBox.Check("Bill Gates");
-            Assert.Equal(true,chequedListBox.IsChecked("Bill Gates"));
+            Assert.That(chequedListBox.IsChecked("Bill Gates"), Is.True);
         }
 
         public virtual void SelectRadioButton()
         {
-            Assert.Equal(false,radioButton1.IsSelected);
-            Assert.Equal(false,radioButton2.IsSelected);
+            Assert.That(radioButton1.IsSelected, Is.False);
+            Assert.That(radioButton2.IsSelected, Is.False);
             radioButton1.Select();
-            Assert.Equal(true, radioButton1.IsSelected);
+            Assert.That(radioButton1.IsSelected, Is.True);
             radioButton2.Select();
-            Assert.Equal(true, radioButton2.IsSelected);
+            Assert.That(radioButton2.IsSelected, Is.True);
         }
 
         public virtual void SelectItemInListBox()
         {
             listBox.Select("Speilberg");
-            Assert.Equal(true,listBox.IsSelected("Speilberg"));
+            Assert.That(listBox.IsSelected("Speilberg"), Is.True);
             listBox.Select("Nagesh");
-            Assert.Equal(true,listBox.IsSelected("Nagesh"));
+            Assert.That(listBox.IsSelected("Nagesh"), Is.True);
         }
 
         public virtual void SelectDateTime()
         {
-            Assert.Equal(DateTime.Today, dateTimePicker.Date);
+            Assert.That(dateTimePicker.Date, Is.EqualTo(DateTime.Today));
             DateTime tenDaysFromToday = DateTime.Today.AddDays(10);
             dateTimePicker.Date = tenDaysFromToday;
-            Assert.Equal(tenDaysFromToday, dateTimePicker.Date);
+            Assert.That(dateTimePicker.Date, Is.EqualTo(tenDaysFromToday));
         }
 
         public virtual void SelectItemInListView()
         {
             listView.Select(0);
-            Assert.Equal(true,listView.Rows[0].IsSelected);
+            Assert.That(listView.Rows[0].IsSelected, Is.True);
             listView.Select(1);
-            Assert.Equal(true,listView.Rows[1].IsSelected);
+            Assert.That(listView.Rows[1].IsSelected, Is.True);
         }
 
         public virtual void LaunchModalWindow()
@@ -137,9 +137,9 @@ public virtual void SelectNodesInTree()
         {
             ped.Node("Root").Expand();
             ped.Node("Root", "Child").Expand();
-            Assert.Equal(2, ped.Nodes.Count);
+            Assert.That(ped.Nodes, Has.Count.EqualTo(2));
             addNode.Click();
-            Assert.Equal(true, ped.HasNode("DynamicNode"));
+            Assert.That(ped.HasNode("DynamicNode"), Is.True);
         }
 
         public virtual void CheckProgress()
diff --git a/src/TestStack.White.ScreenObjects.UITests/packages.config b/src/TestStack.White.ScreenObjects.UITests/packages.config
index 66371967..82ba4df5 100644
--- a/src/TestStack.White.ScreenObjects.UITests/packages.config
+++ b/src/TestStack.White.ScreenObjects.UITests/packages.config
@@ -1,6 +1,4 @@
 ﻿<?xml version="1.0" encoding="utf-8"?>
 <packages>
-  <package id="Castle.Core" version="3.3.0" targetFramework="net40" />
-  <package id="NSubstitute" version="1.7.2.0" targetFramework="net40" />
-  <package id="xunit" version="1.9.2" targetFramework="net40" />
+  <package id="NUnit" version="3.0.1" targetFramework="net40" />
 </packages>
\ No newline at end of file
diff --git a/src/TestStack.White.ScreenObjects/TestStack.White.ScreenObjects.csproj b/src/TestStack.White.ScreenObjects/TestStack.White.ScreenObjects.csproj
index e017ecde..62fa3b40 100644
--- a/src/TestStack.White.ScreenObjects/TestStack.White.ScreenObjects.csproj
+++ b/src/TestStack.White.ScreenObjects/TestStack.White.ScreenObjects.csproj
@@ -34,7 +34,6 @@
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
@@ -155,7 +154,6 @@
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
@@ -163,4 +161,5 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
+
diff --git a/src/TestStack.White.UITests/AutomationElementSearch/RawAutomationElementFinderTest.cs b/src/TestStack.White.UITests/AutomationElementSearch/RawAutomationElementFinderTest.cs
deleted file mode 100644
index e7934f7d..00000000
--- a/src/TestStack.White.UITests/AutomationElementSearch/RawAutomationElementFinderTest.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Windows.Automation;
-using TestStack.White.AutomationElementSearch;
-using TestStack.White.Configuration;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.AutomationElementSearch
-{
-    public class RawAutomationElementFinderTest : WhiteTestBase, IDisposable
-    {
-        readonly IDisposable cleanup;
-
-        public RawAutomationElementFinderTest()
-        {
-            cleanup = CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c =>
-            {
-                c.RawElementBasedSearch = true;
-                c.MaxElementSearchDepth = 2;
-            });
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(Descendant);
-        }
-
-        public void Descendant()
-        {
-            using (var window = StartScenario("OpenListView", "ListViewWindow"))
-            {
-                var listView = window.Get<ListView>("ListView");
-                var finder = new RawAutomationElementFinder(listView.AutomationElement);
-                Assert.NotEqual(null, finder.Descendant(AutomationSearchCondition.ByControlType(ControlType.HeaderItem).OfName("Key")));
-                Assert.Equal(null, finder.Descendant(AutomationSearchCondition.ByControlType(ControlType.Header).OfName("Key")));
-            }
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
-        }
-
-        public void Dispose()
-        {
-            cleanup.Dispose();
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/AutomationElementSearch/RawAutomationElementFinderTests.cs b/src/TestStack.White.UITests/AutomationElementSearch/RawAutomationElementFinderTests.cs
new file mode 100644
index 00000000..52248a8d
--- /dev/null
+++ b/src/TestStack.White.UITests/AutomationElementSearch/RawAutomationElementFinderTests.cs
@@ -0,0 +1,49 @@
+using NUnit.Framework;
+using System;
+using System.Windows.Automation;
+using TestStack.White.AutomationElementSearch;
+using TestStack.White.Configuration;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.AutomationElementSearch
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class RawAutomationElementFinderTests : WhiteUITestBase
+    {
+        private IDisposable cleanup;
+
+        public RawAutomationElementFinderTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            cleanup = CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c =>
+            {
+                c.RawElementBasedSearch = true;
+                c.MaxElementSearchDepth = 2;
+            });
+        }
+
+        [OneTimeTearDown]
+        public void Teardown()
+        {
+            cleanup.Dispose();
+        }
+
+        [Test]
+        public void DescendantTest()
+        {
+            using (var window = StartScenario("OpenListView", "ListViewWindow"))
+            {
+                var listView = window.Get<ListView>("ListView");
+                var finder = new RawAutomationElementFinder(listView.AutomationElement);
+                Assert.That(finder.Descendant(AutomationSearchCondition.ByControlType(ControlType.HeaderItem).OfName("Key")), Is.Not.Null);
+                Assert.That(finder.Descendant(AutomationSearchCondition.ByControlType(ControlType.Header).OfName("Key")), Is.Null);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ButtonTest.cs b/src/TestStack.White.UITests/ControlTests/ButtonTest.cs
deleted file mode 100644
index 135201b0..00000000
--- a/src/TestStack.White.UITests/ControlTests/ButtonTest.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.Configuration;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.Finders;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class ButtonTest : WhiteTestBase
-    {
-        public void Click()
-        {
-            var button = MainWindow.Get<Button>("ButtonWithTooltip");
-            button.Click();
-            
-            Assert.Equal(button.Text, "Button Clicked with Mouse");
-        }
-
-        public void ThrowsWhenNotFound()
-        {
-            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.FindWindowTimeout = 500))
-            {
-                var exception = Assert.Throws<AutomationException>(()=>MainWindow.Get<Button>(SearchCriteria.ByAutomationId("foo")));
-                Assert.Equal("Failed to get (ControlType=button or ControlType=check box),AutomationId=foo", exception.Message);
-            }
-        }
-
-        public void RaiseClickEvent()
-        {
-            var button = MainWindow.Get<Button>("ButtonWithTooltip");
-            button.RaiseClickEvent();
-            Assert.Equal(button.Text, "Clicked");
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(RaiseClickEvent);
-            RunTest(Click);
-            RunTest(ThrowsWhenNotFound);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ButtonTests.cs b/src/TestStack.White.UITests/ControlTests/ButtonTests.cs
new file mode 100644
index 00000000..45006043
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/ButtonTests.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Windows.Automation;
+using NUnit.Framework;
+using TestStack.White.Configuration;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.Finders;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class ButtonTests : WhiteUITestBase
+    {
+        public ButtonTests(WindowsFramework framework)
+            : base(framework) { }
+
+        [Test]
+        public void Click()
+        {
+            var button = MainWindow.Get<Button>("ButtonWithTooltip");
+            button.Click();
+            Assert.That(button.Text, Is.EqualTo("Button Clicked with Mouse"));
+        }
+
+        [Test]
+        public void ThrowsWhenNotFound()
+        {
+            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.FindWindowTimeout = 500))
+            {
+                Assert.That(() => { MainWindow.Get<Button>(SearchCriteria.ByAutomationId("foo")); },
+                    Throws.TypeOf<AutomationException>().With.
+                    Message.EqualTo(String.Format("Failed to get (ControlType={0} or ControlType={1}),AutomationId=foo",
+                        ControlType.Button.LocalizedControlType, ControlType.CheckBox.LocalizedControlType)));
+            }
+        }
+
+        [Test]
+        public void RaiseClickEvent()
+        {
+            var button = MainWindow.Get<Button>("ButtonWithTooltip");
+            button.RaiseClickEvent();
+            Assert.That(button.Text, Is.EqualTo("Clicked"));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ColorTest.cs b/src/TestStack.White.UITests/ControlTests/ColorTest.cs
deleted file mode 100644
index b21af8ab..00000000
--- a/src/TestStack.White.UITests/ControlTests/ColorTest.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using System.Collections.Generic;
-using System.Drawing;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class ColorTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectInputControls();
-            RunTest(BorderColour);
-            RunTest(DisplayAsImage);
-        }
-
-        void BorderColour()
-        {
-            var blueTextBox = MainWindow.Get<TextBox>("BlueTextBox");
-            Color color = blueTextBox.BorderColor;
-            Assert.Equal(100, color.R);
-            Assert.Equal(100, color.G);
-            Assert.Equal(100, color.B);
-        }
-
-        void DisplayAsImage()
-        {
-            var blueTextBox = MainWindow.Get<TextBox>("BlueTextBox");
-            Bitmap bitmap = blueTextBox.VisibleImage;
-            Color color = bitmap.GetPixel(3, 3);
-            Assert.Equal(color.B, color.B);
-            Assert.Equal(color.G, color.G);
-            Assert.Equal(color.R, color.R);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ColorTests.cs b/src/TestStack.White.UITests/ControlTests/ColorTests.cs
new file mode 100644
index 00000000..c6367e68
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/ColorTests.cs
@@ -0,0 +1,39 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    public class ColorTests : WhiteUITestBase
+    {
+        public ColorTests(WindowsFramework framework)
+            : base(framework) { }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectInputControls();
+        }
+
+        [Test]
+        public void BorderColourTest()
+        {
+            var blueTextBox = MainWindow.Get<TextBox>("BlueTextBox");
+            var color = blueTextBox.BorderColor;
+            Assert.That(color.R, Is.EqualTo(100));
+            Assert.That(color.G, Is.EqualTo(100));
+            Assert.That(color.B, Is.EqualTo(100));
+        }
+
+        [Test]
+        public void DisplayAsImageTest()
+        {
+            var blueTextBox = MainWindow.Get<TextBox>("BlueTextBox");
+            var bitmap = blueTextBox.VisibleImage;
+            var color = bitmap.GetPixel(3, 3);
+            Assert.That(color.B, Is.EqualTo(color.B));
+            Assert.That(color.G, Is.EqualTo(color.G));
+            Assert.That(color.R, Is.EqualTo(color.R));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/CustomUIItemTest.cs b/src/TestStack.White.UITests/ControlTests/CustomUIItemTest.cs
deleted file mode 100644
index 762abc6c..00000000
--- a/src/TestStack.White.UITests/ControlTests/CustomUIItemTest.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System;
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.Custom;
-using TestStack.White.UIItems.WindowItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class CustomUIItemTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            // ReSharper disable AccessToDisposedClosure
-            using (var window = StartScenario("CustomUIItemScenario", "CustomUIItemScenario"))
-            {
-                RunTest(() => FindCustomItem(window));
-                RunTest(() => NoDateUIItemMappingDefined(window));
-            }
-        }
-
-        void FindCustomItem(Window window)
-        {
-            var myDateUIItem = window.Get<MyDateUIItem>("DateOfBirth");
-            Assert.NotEqual(null, myDateUIItem);
-            myDateUIItem.EnterDate(DateTime.Today);
-        }
-
-        void NoDateUIItemMappingDefined(Window window)
-        {
-            Assert.Throws<CustomUIItemException>(()=>window.Get<MyDateUIItemWithoutMappingDefined>("DateOfBirth"));
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/CustomUIItemTests.cs b/src/TestStack.White.UITests/ControlTests/CustomUIItemTests.cs
new file mode 100644
index 00000000..654352a8
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/CustomUIItemTests.cs
@@ -0,0 +1,46 @@
+using NUnit.Framework;
+using System;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.Custom;
+using TestStack.White.UIItems.WindowItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class CustomUIItemTests : WhiteUITestBase
+    {
+        private Window window;
+
+        public CustomUIItemTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            window = StartScenario("CustomUIItemScenario", "CustomUIItemScenario");
+        }
+
+        [OneTimeTearDown]
+        public void Teardown()
+        {
+            window.Dispose();
+        }
+
+        [Test]
+        public void FindCustomItemTest()
+        {
+            var myDateUIItem = window.Get<MyDateUIItem>("DateOfBirth");
+            Assert.That(myDateUIItem, Is.Not.Null);
+            myDateUIItem.EnterDate(DateTime.Today);
+        }
+
+        [Test]
+        public void NoDateUIItemMappingDefinedTest()
+        {
+            Assert.That(() => { window.Get<MyDateUIItemWithoutMappingDefined>("DateOfBirth"); }, Throws.TypeOf<CustomUIItemException>());
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/DataGridTests.cs b/src/TestStack.White.UITests/ControlTests/DataGridTests.cs
index acd3e92a..a9a7b0a7 100644
--- a/src/TestStack.White.UITests/ControlTests/DataGridTests.cs
+++ b/src/TestStack.White.UITests/ControlTests/DataGridTests.cs
@@ -1,65 +1,77 @@
-﻿using System.Collections.Generic;
+﻿using NUnit.Framework;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.Finders;
-using TestStack.White.UIItems.TableItems;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests
 {
-    public class DataGridTests : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class DataGridTests : WhiteUITestBase
     {
-        protected ListView DataGridWpfUnderTest { get; set; }
-        protected Table DataGridWinFormsUnderTest { get; set; }
+        private ListView dataGridWpfUnderTest;
+        private UIItems.TableItems.Table dataGridWinFormsUnderTest;
 
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public DataGridTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
         {
             SelectDataGridTab();
-            if (framework == WindowsFramework.Wpf)
+            if (Framework == WindowsFramework.Wpf)
             {
-                DataGridWpfUnderTest = MainWindow.Get<ListView>(SearchCriteria.ByAutomationId("DataGridControl"));
-                RunTest(CanGetAllItemsWpf);
-                RunTest(CanGetCellWpf);
+                dataGridWpfUnderTest = MainWindow.Get<ListView>(SearchCriteria.ByAutomationId("DataGridControl"));
             }
-            else if (framework == WindowsFramework.WinForms)
+            else if (Framework == WindowsFramework.WinForms)
             {
-                DataGridWinFormsUnderTest = MainWindow.Get<Table>(SearchCriteria.ByAutomationId("DataGridControl"));
-                RunTest(CanGetAllItemsWinforms);
+                dataGridWinFormsUnderTest = MainWindow.Get<UIItems.TableItems.Table>(SearchCriteria.ByAutomationId("DataGridControl"));
             }
         }
 
-        void CanGetAllItemsWpf()
+        [Test]
+        public void CanGetAllItemsWpfTest()
         {
-            var rows = DataGridWpfUnderTest.Rows;
-            Assert.Equal(3, rows.Count);
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+            var rows = dataGridWpfUnderTest.Rows;
+            Assert.That(rows, Has.Count.EqualTo(3));
             var row1 = rows.Get(0);
-            Assert.Equal(4, row1.Cells.Count);
-            Assert.Equal("1", row1.Cells[0].Text);
-            Assert.Equal("Item1", row1.Cells[1].Text);
-            Assert.Contains("Simple", row1.Cells[2].Text);
+            Assert.That(row1.Cells, Has.Count.EqualTo(4));
+            Assert.That(row1.Cells[0].Text, Is.EqualTo("1"));
+            Assert.That(row1.Cells[1].Text, Is.EqualTo("Item1"));
+            Assert.That(row1.Cells[2].Text, Does.Contain("Simple"));
         }
 
-        void CanGetCellWpf()
+        [Test]
+        public void CanGetCellWpfTest()
         {
-            Assert.Equal("Item1", DataGridWpfUnderTest.Cell("Contents", 0).Text);
-            Assert.Equal("Item2", DataGridWpfUnderTest.Cell("Contents", 1).Text);
-            Assert.Equal("Item3", DataGridWpfUnderTest.Cell("Contents", 2).Text);
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+            Assert.That(dataGridWpfUnderTest.Cell("Contents", 0).Text, Is.EqualTo("Item1"));
+            Assert.That(dataGridWpfUnderTest.Cell("Contents", 1).Text, Is.EqualTo("Item2"));
+            Assert.That(dataGridWpfUnderTest.Cell("Contents", 2).Text, Is.EqualTo("Item3"));
         }
 
-        void CanGetAllItemsWinforms()
+        [Test]
+        public void CanGetAllItemsWinformsTest()
         {
-            var rows = DataGridWinFormsUnderTest.Rows;
-            Assert.Equal(3, rows.Count);
+            if (Framework != WindowsFramework.WinForms)
+            {
+                Assert.Ignore();
+            }
+            var rows = dataGridWinFormsUnderTest.Rows;
+            Assert.That(rows, Has.Count.EqualTo(3));
             var row1 = rows[0];
-            Assert.Equal(3, row1.Cells.Count);
-            Assert.Equal("1", row1.Cells[0].Value);
-            Assert.Equal("Item1", row1.Cells[1].Value);
-            Assert.Contains("Simple", (string)row1.Cells[2].Value);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
+            Assert.That(row1.Cells, Has.Count.EqualTo(3));
+            Assert.That(row1.Cells[0].Value, Is.EqualTo("1"));
+            Assert.That(row1.Cells[1].Value, Is.EqualTo("Item1"));
+            Assert.That(row1.Cells[2].Value, Does.Contain("Simple"));
         }
     }
 }
diff --git a/src/TestStack.White.UITests/ControlTests/GroupBoxTest.cs b/src/TestStack.White.UITests/ControlTests/GroupBoxTest.cs
deleted file mode 100644
index aa1f4dc6..00000000
--- a/src/TestStack.White.UITests/ControlTests/GroupBoxTest.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class GroupBoxTest : WhiteTestBase
-    {
-        void Find()
-        {
-            var groupBox = MainWindow.Get<GroupBox>("ScenariosPane");
-            Assert.NotNull(groupBox);
-        }
-
-        void GetItem()
-        {
-            var groupBox = MainWindow.Get<GroupBox>("ScenariosPane");
-            var button = groupBox.Get<Button>("ButtonWithTooltip");
-            Assert.NotNull(button);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(Find);
-            RunTest(GetItem);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/GroupBoxTests.cs b/src/TestStack.White.UITests/ControlTests/GroupBoxTests.cs
new file mode 100644
index 00000000..4ba0f45a
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/GroupBoxTests.cs
@@ -0,0 +1,30 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class GroupBoxTests : WhiteUITestBase
+    {
+        public GroupBoxTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void FindTest()
+        {
+            var groupBox = MainWindow.Get<GroupBox>("ScenariosPane");
+            Assert.That(groupBox, Is.Not.Null);
+        }
+
+        [Test]
+        public void GetItemTest()
+        {
+            var groupBox = MainWindow.Get<GroupBox>("ScenariosPane");
+            var button = groupBox.Get<Button>("ButtonWithTooltip");
+            Assert.That(button, Is.Not.Null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/HScrollBarTest.cs b/src/TestStack.White.UITests/ControlTests/HScrollBarTests.cs
similarity index 50%
rename from src/TestStack.White.UITests/ControlTests/HScrollBarTest.cs
rename to src/TestStack.White.UITests/ControlTests/HScrollBarTests.cs
index 30e64833..5fa45e39 100644
--- a/src/TestStack.White.UITests/ControlTests/HScrollBarTest.cs
+++ b/src/TestStack.White.UITests/ControlTests/HScrollBarTests.cs
@@ -1,15 +1,22 @@
-using System.Collections.Generic;
+using NUnit.Framework;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.Scrolling;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests
 {
-    public class HScrollBarTest : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class HScrollBarTests : WhiteUITestBase
     {
         private IHScrollBar hScrollBar;
 
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public HScrollBarTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
         {
             SelectInputControls();
             var textBox = MainWindow.Get<TextBox>("MultiLineTextBox");
@@ -21,44 +28,37 @@ protected override void ExecuteTestRun(WindowsFramework framework)
             hScrollBar.SetToMinimum();
             hScrollBar.ScrollRightLarge();
             hScrollBar.ScrollLeftLarge();
-
-            RunTest(ShouldGetHScrollBar);
-            RunTest(ShouldScrollRight);
-            RunTest(ShouldScrollRightLarge);
-            RunTest(ShouldScrollLeft);
         }
 
-        void ShouldGetHScrollBar()
+        [Test]
+        public void ShouldGetHScrollBarTest()
         {
-            Assert.NotNull(hScrollBar);
+            Assert.That(hScrollBar, Is.Not.Null);
         }
 
-        void ShouldScrollRight()
+        [Test]
+        public void ShouldScrollRightTest()
         {
-            double initialValue = hScrollBar.Value;
+            var initialValue = hScrollBar.Value;
             hScrollBar.ScrollRight();
-            Assert.True(hScrollBar.Value > initialValue);
+            Assert.That(hScrollBar.Value, Is.GreaterThan(initialValue));
         }
 
-        void ShouldScrollRightLarge()
+        [Test]
+        public void ShouldScrollRightLargeTest()
         {
-            double initialValue = hScrollBar.Value;
+            var initialValue = hScrollBar.Value;
             hScrollBar.ScrollRightLarge();
-            Assert.True(hScrollBar.Value > initialValue);
+            Assert.That(hScrollBar.Value, Is.GreaterThan(initialValue));
         }
 
-        void ShouldScrollLeft()
+        [Test]
+        public void ShouldScrollLeftTest()
         {
             hScrollBar.ScrollRightLarge();
-            double valueBeforeScrollLeft = hScrollBar.Value;
+            var valueBeforeScrollLeft = hScrollBar.Value;
             hScrollBar.ScrollLeft();
-            Assert.True(valueBeforeScrollLeft > hScrollBar.Value);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
+            Assert.That(hScrollBar.Value, Is.LessThan(valueBeforeScrollLeft));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/HotKeyTest.cs b/src/TestStack.White.UITests/ControlTests/HotKeyTest.cs
deleted file mode 100644
index 894458d0..00000000
--- a/src/TestStack.White.UITests/ControlTests/HotKeyTest.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System;
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.Utility;
-using TestStack.White.WindowsAPI;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class HotKeyTest : WhiteTestBase
-    {
-        public void AccessKey(WindowsFramework framework)
-        {
-            var button = MainWindow.Get<Button>("ButtonWithTooltip");
-            if (framework != WindowsFramework.Wpf) Assert.Equal("Alt+B", button.AccessKey);
-            Keyboard.HoldKey(KeyboardInput.SpecialKeys.ALT);
-            Keyboard.Enter("B");
-            Keyboard.LeaveKey(KeyboardInput.SpecialKeys.ALT);
-            Retry.For(() => Assert.Equal("Clicked", button.Text), TimeSpan.FromSeconds(2));
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(() => AccessKey(framework));
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/HotKeyTests.cs b/src/TestStack.White.UITests/ControlTests/HotKeyTests.cs
new file mode 100644
index 00000000..8865d355
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/HotKeyTests.cs
@@ -0,0 +1,32 @@
+using NUnit.Framework;
+using System;
+using TestStack.White.UIItems;
+using TestStack.White.Utility;
+using TestStack.White.WindowsAPI;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class HotKeyTests : WhiteUITestBase
+    {
+        public HotKeyTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void AccessKeyTest()
+        {
+            var button = MainWindow.Get<Button>("ButtonWithTooltip");
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.That(button.AccessKey, Is.EqualTo("Alt+B").IgnoreCase);
+            }
+            Keyboard.HoldKey(KeyboardInput.SpecialKeys.ALT);
+            Keyboard.Enter("B");
+            Keyboard.LeaveKey(KeyboardInput.SpecialKeys.ALT);
+            Retry.For(() => Assert.That(button.Text, Is.EqualTo("Clicked")), TimeSpan.FromSeconds(2));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/HyperlinkTest.cs b/src/TestStack.White.UITests/ControlTests/HyperlinkTest.cs
deleted file mode 100644
index 38dea4ff..00000000
--- a/src/TestStack.White.UITests/ControlTests/HyperlinkTest.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using System.Collections.Generic;
-using System.Windows;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class HyperlinkTest : WhiteTestBase
-    {
-        public void Click()
-        {
-            var hyperlink = MainWindow.Get<Hyperlink>("LinkLabel");
-            hyperlink.Click(10, 10);
-            Assert.Equal("Hyperlink Clicked", hyperlink.HelpText);
-        }
-
-        public void ClickablePoint()
-        {
-            var hyperlink = MainWindow.Get<Hyperlink>("LinkLabel");
-            hyperlink.Focus();
-            var clickablePoint = hyperlink.ClickablePoint;
-
-            Assert.NotEqual(new Point(0, 0), clickablePoint);
-            hyperlink.Click();
-            Assert.Equal("Hyperlink Clicked", hyperlink.HelpText);
-        }
-
-        public void ClickHyperlinkFromLabel()
-        {
-            var labelContainingHyperlink = MainWindow.Get<WPFLabel>("LinkLabelContainer");
-            var hyperlink = labelContainingHyperlink.Hyperlink("Link Text");
-            hyperlink.Click();
-            Assert.Equal("Hyperlink Clicked", hyperlink.HelpText);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectOtherControls();
-            RunTest(Click);
-            RunTest(ClickablePoint, WindowsFramework.Wpf); //TODO Figure out why this fails for Windows Forms
-            RunTest(ClickHyperlinkFromLabel, WindowsFramework.Wpf);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/HyperlinkTests.cs b/src/TestStack.White.UITests/ControlTests/HyperlinkTests.cs
new file mode 100644
index 00000000..3aad12f4
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/HyperlinkTests.cs
@@ -0,0 +1,60 @@
+using NUnit.Framework;
+using System.Windows;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class HyperlinkTests : WhiteUITestBase
+    {
+        public HyperlinkTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectOtherControls();
+        }
+
+        [Test]
+        public void ClickTest()
+        {
+            var hyperlink = MainWindow.Get<Hyperlink>("LinkLabel");
+            hyperlink.Click(10, 10);
+            Assert.That(hyperlink.HelpText, Is.EqualTo("Hyperlink Clicked"));
+        }
+
+        [Test]
+        public void ClickablePointTest()
+        {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                //TODO Figure out why this fails for Windows Forms
+                Assert.Inconclusive("This should actually work");
+            }
+            var hyperlink = MainWindow.Get<Hyperlink>("LinkLabel");
+            hyperlink.Focus();
+            var clickablePoint = hyperlink.ClickablePoint;
+
+            Assert.That(clickablePoint, Is.Not.EqualTo(new Point(0, 0)));
+            hyperlink.Click();
+            Assert.That(hyperlink.HelpText, Is.EqualTo("Hyperlink Clicked"));
+        }
+
+        [Test]
+        public void ClickHyperlinkFromLabelTest()
+        {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+            var labelContainingHyperlink = MainWindow.Get<WPFLabel>("LinkLabelContainer");
+            var hyperlink = labelContainingHyperlink.Hyperlink("Link Text");
+            hyperlink.Click();
+            Assert.That(hyperlink.HelpText, Is.EqualTo("Hyperlink Clicked"));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ImageTest.cs b/src/TestStack.White.UITests/ControlTests/ImageTest.cs
deleted file mode 100644
index 8a462eca..00000000
--- a/src/TestStack.White.UITests/ControlTests/ImageTest.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class ImageTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(Get);
-        }
-
-        void Get()
-        {
-            SelectOtherControls();
-            var image = MainWindow.Get<Image>("Image");
-            Assert.NotNull(image);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ImageTests.cs b/src/TestStack.White.UITests/ControlTests/ImageTests.cs
new file mode 100644
index 00000000..d6bd48a2
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/ImageTests.cs
@@ -0,0 +1,29 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class ImageTests : WhiteUITestBase
+    {
+        public ImageTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectOtherControls();
+        }
+
+        [Test]
+        public void GetTest()
+        {
+            SelectOtherControls();
+            var image = MainWindow.Get<Image>("Image");
+            Assert.That(image, Is.Not.Null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/CheckboxTest.cs b/src/TestStack.White.UITests/ControlTests/InputControls/CheckboxTest.cs
deleted file mode 100644
index 892818ca..00000000
--- a/src/TestStack.White.UITests/ControlTests/InputControls/CheckboxTest.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-﻿using System.Collections.Generic;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.InputControls
-{
-    public class CheckboxTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectInputControls();
-            RunTest(SelectUnselect);
-            RunTest(CheckAndUncheckCheckbox);
-        }
-
-        private void SelectUnselect()
-        {
-            var checkBox = MainWindow.Get<CheckBox>("CheckBox");
-            Assert.False(checkBox.IsSelected);
-            Assert.False(checkBox.Checked);
-            checkBox.Select();
-            Assert.True(checkBox.IsSelected);
-            Assert.True(checkBox.Checked);
-            checkBox.UnSelect();
-            Assert.False(checkBox.IsSelected);
-            Assert.False(checkBox.Checked);
-        }
-
-        private void CheckAndUncheckCheckbox()
-        {
-            var checkBox = MainWindow.Get<CheckBox>("CheckBox");
-            Assert.False(checkBox.Checked);
-
-            checkBox.Checked = true;
-            Assert.True(checkBox.Checked);
-
-
-            checkBox.Checked = false;
-            Assert.False(checkBox.Checked);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/CheckboxTests.cs b/src/TestStack.White.UITests/ControlTests/InputControls/CheckboxTests.cs
new file mode 100644
index 00000000..7661125f
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/InputControls/CheckboxTests.cs
@@ -0,0 +1,44 @@
+﻿using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests.InputControls
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class CheckboxTests : WhiteUITestBase
+    {
+        public CheckboxTests(WindowsFramework framework)
+            : base(framework) { }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectInputControls();
+        }
+
+        [Test]
+        public void SelectUnselect()
+        {
+            var checkBox = MainWindow.Get<CheckBox>("CheckBox");
+            Assert.That(checkBox.IsSelected, Is.False);
+            Assert.That(checkBox.Checked, Is.False);
+            checkBox.Select();
+            Assert.That(checkBox.IsSelected, Is.True);
+            Assert.That(checkBox.Checked, Is.True);
+            checkBox.UnSelect();
+            Assert.That(checkBox.IsSelected, Is.False);
+            Assert.That(checkBox.Checked, Is.False);
+        }
+
+        [Test]
+        public void CheckAndUncheckCheckbox()
+        {
+            var checkBox = MainWindow.Get<CheckBox>("CheckBox");
+            Assert.That(checkBox.Checked, Is.False);
+            checkBox.Checked = true;
+            Assert.That(checkBox.Checked, Is.True);
+            checkBox.Checked = false;
+            Assert.That(checkBox.Checked, Is.False);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/DatePickerTests.cs b/src/TestStack.White.UITests/ControlTests/InputControls/DatePickerTests.cs
index e4efc7ce..d3f83838 100644
--- a/src/TestStack.White.UITests/ControlTests/InputControls/DatePickerTests.cs
+++ b/src/TestStack.White.UITests/ControlTests/InputControls/DatePickerTests.cs
@@ -1,54 +1,56 @@
-﻿using System;
-using System.Collections.Generic;
+﻿using NUnit.Framework;
+using System;
 using TestStack.White.UIItems;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests.InputControls
 {
-    public class DatePickerTests : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    // [TestFixture(WindowsFramework.Silverlight)]
+    public class DatePickerTests : WhiteUITestBase
     {
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public DatePickerTests(WindowsFramework framework)
+            : base(framework) { }
+
+        [OneTimeSetUp]
+        public void Setup()
         {
             SelectInputControls();
-            RunTest(() => GetDate(DateTime.Today), WindowsFramework.WinForms);
-            RunTest(() => GetDate(null), WindowsFramework.Wpf, WindowsFramework.Silverlight);
-            RunTest(SetDate);
-            RunTest(ClearDate, WindowsFramework.Wpf, WindowsFramework.WinForms);
         }
 
-        private void GetDate(DateTime? defaultTime)
+        [Test]
+        public void GetDateTest()
         {
+            var defaultTime = Framework == WindowsFramework.WinForms ? (DateTime?)DateTime.Today : null;
             var dateTimePicker = MainWindow.Get<DateTimePicker>("DatePicker");
-            Assert.Equal(defaultTime, dateTimePicker.Date);
+            Assert.That(dateTimePicker.Date, Is.EqualTo(defaultTime));
         }
 
-        private void SetDate()
+        [Test]
+        public void SetDateTest()
         {
             var dateTimePicker = MainWindow.Get<DateTimePicker>("DatePicker");
-            DateTime changedDate = DateTime.Today.AddDays(23);
+            var changedDate = DateTime.Today.AddDays(23);
             dateTimePicker.Date = changedDate;
-            Assert.Equal(changedDate, dateTimePicker.Date);
+            Assert.That(dateTimePicker.Date, Is.EqualTo(changedDate));
 
             changedDate = DateTime.Today.AddDays(23);
             dateTimePicker.Date = changedDate;
-            Assert.Equal(changedDate, dateTimePicker.Date);
+            Assert.That(dateTimePicker.Date, Is.EqualTo(changedDate));
         }
 
-        private void ClearDate()
+        [Test]
+        public void ClearDateTest()
         {
+            if (Framework == WindowsFramework.Silverlight)
+            {
+                Assert.Ignore("Cannot clear date for siliverlight");
+            }
             var dateTimePicker = MainWindow.Get<DateTimePicker>("DatePicker");
             var date = dateTimePicker.Date;
             dateTimePicker.Date = null;
-
             //Checks that date in Win32 DateTimePicker didn't change, but date in WPF DateTimePicker was cleared
-            Assert.Equal(dateTimePicker.Framework == WindowsFramework.Wpf ? null : date,
-                dateTimePicker.Date);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
+            Assert.That(dateTimePicker.Date, Is.EqualTo(Framework == WindowsFramework.Wpf ? null : date));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/PasswordTextBoxTest.cs b/src/TestStack.White.UITests/ControlTests/InputControls/PasswordTextBoxTests.cs
similarity index 51%
rename from src/TestStack.White.UITests/ControlTests/InputControls/PasswordTextBoxTest.cs
rename to src/TestStack.White.UITests/ControlTests/InputControls/PasswordTextBoxTests.cs
index aa4fa546..3a305a28 100644
--- a/src/TestStack.White.UITests/ControlTests/InputControls/PasswordTextBoxTest.cs
+++ b/src/TestStack.White.UITests/ControlTests/InputControls/PasswordTextBoxTests.cs
@@ -1,46 +1,52 @@
+using NUnit.Framework;
 using System;
-using System.Collections.Generic;
 using TestStack.White.UIItems;
 using TestStack.White.Utility;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests.InputControls
 {
-    public class PasswordTextBoxTest : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class PasswordTextBoxTests : WhiteUITestBase
     {
-        public void CannotGetTextFromPassword()
+        public PasswordTextBoxTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectInputControls();
+        }
+
+        [Test]
+        public void CannotGetTextFromPasswordTest()
         {
             var textBox = MainWindow.Get<TextBox>("PasswordBox");
             textBox.BulkText = "foobar";
-            var exception = Assert.Throws<WhiteException>(() =>
+
+            Assert.That(() =>
             {
                 // ReSharper disable once UnusedVariable
                 var text = textBox.Text;
-            });
-            Assert.Equal("Text cannot be retrieved from textbox which has secret text (e.g. password) stored in it", exception.Message);
+            }, Throws.TypeOf<WhiteException>().With.
+                Message.EqualTo("Text cannot be retrieved from textbox which has secret text (e.g. password) stored in it"));
         }
 
-        public void GetPasswordValueWhenTextBoxIsNotPasswordField()
+        [Test]
+        public void GetPasswordValueWhenTextBoxIsNotPasswordFieldTest()
         {
+            if (Framework == WindowsFramework.Wpf)
+            {
+                Assert.Ignore("Do not run for WPF");
+            }
             var textBox = MainWindow.Get<TextBox>("PasswordBox");
             textBox.BulkText = "foobar";
             MainWindow.Get<Button>("UnmaskPasswordButton").Click();
             textBox = MainWindow.Get<TextBox>("PasswordBox");
             string text = Retry.For(() => textBox.Text, TimeSpan.FromSeconds(2));
-            Assert.Equal("foobar", text);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectInputControls();
-            RunTest(CannotGetTextFromPassword);
-            RunTest(GetPasswordValueWhenTextBoxIsNotPasswordField, WindowsFramework.WinForms);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
+            Assert.That(text, Is.EqualTo("foobar"));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/RadioButtonTest.cs b/src/TestStack.White.UITests/ControlTests/InputControls/RadioButtonTest.cs
deleted file mode 100644
index 310af4ba..00000000
--- a/src/TestStack.White.UITests/ControlTests/InputControls/RadioButtonTest.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.InputControls
-{
-    public class RadioButtonTest : WhiteTestBase
-    {
-        void SelectSingleRadioButton()
-        {
-            var radioButton = MainWindow.Get<RadioButton>("RadioButton1");
-            Assert.False(radioButton.IsSelected);
-            radioButton.Select();
-            Assert.True(radioButton.IsSelected);
-        }
-
-        void SelectRadioButtonGroup()
-        {
-            var radioButton1 = MainWindow.Get<RadioButton>("RadioButton1");
-            var radioButton2 = MainWindow.Get<RadioButton>("RadioButton2");
-
-            Assert.False(radioButton1.IsSelected && radioButton2.IsSelected);
-
-            radioButton1.Select();
-            Assert.True(radioButton1.IsSelected);
-            Assert.False(radioButton2.IsSelected);
-
-            radioButton2.Select();
-
-            Assert.False(radioButton1.IsSelected);
-            // ReSharper disable once HeuristicUnreachableCode
-            Assert.True(radioButton2.IsSelected);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectInputControls();
-            RunTest(SelectSingleRadioButton);
-            RunTest(SelectRadioButtonGroup);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/RadioButtonTests.cs b/src/TestStack.White.UITests/ControlTests/InputControls/RadioButtonTests.cs
new file mode 100644
index 00000000..57c7a2b5
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/InputControls/RadioButtonTests.cs
@@ -0,0 +1,49 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests.InputControls
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class RadioButtonTests : WhiteUITestBase
+    {
+        public RadioButtonTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectInputControls();
+        }
+
+        [Test]
+        public void SelectSingleRadioButtonTest()
+        {
+            var radioButton = MainWindow.Get<RadioButton>("RadioButton1");
+            Assert.That(radioButton.IsSelected, Is.False);
+            radioButton.Select();
+            Assert.That(radioButton.IsSelected, Is.True);
+        }
+
+        [Test]
+        public void SelectRadioButtonGroupTest()
+        {
+            var radioButton1 = MainWindow.Get<RadioButton>("RadioButton1");
+            var radioButton2 = MainWindow.Get<RadioButton>("RadioButton2");
+
+            Assert.That(radioButton1.IsSelected && radioButton2.IsSelected, Is.False);
+
+            radioButton1.Select();
+            Assert.That(radioButton1.IsSelected, Is.True);
+            Assert.That(radioButton2.IsSelected, Is.False);
+
+            radioButton2.Select();
+
+            Assert.That(radioButton1.IsSelected, Is.False);
+            // ReSharper disable once HeuristicUnreachableCode
+            Assert.That(radioButton2.IsSelected, Is.True);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/SpinnerTest.cs b/src/TestStack.White.UITests/ControlTests/InputControls/SpinnerTest.cs
deleted file mode 100644
index 8dfe27e3..00000000
--- a/src/TestStack.White.UITests/ControlTests/InputControls/SpinnerTest.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.InputControls
-{
-    public class SpinnerTest : WhiteTestBase
-    {
-        private Spinner spinner;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectInputControls();
-            spinner = MainWindow.Get<Spinner>("NumericUpDown");
-            RunTest(Value);
-            RunTest(Increment);
-            RunTest(Decrement);
-        }
-
-        void Increment()
-        {
-            spinner.Value = 4.0;
-            spinner.Increment();
-            Assert.Equal(4.2, spinner.Value);
-        }
-
-        void Value()
-        {
-            spinner.Value = 4.0;
-            Assert.Equal(4, spinner.Value);
-        }
-
-        void Decrement()
-        {
-            spinner.Value = 4.0;
-            spinner.Decrement();
-            Assert.Equal(3.8, spinner.Value);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/SpinnerTests.cs b/src/TestStack.White.UITests/ControlTests/InputControls/SpinnerTests.cs
new file mode 100644
index 00000000..0d2be68c
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/InputControls/SpinnerTests.cs
@@ -0,0 +1,47 @@
+using System.Collections.Generic;
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests.InputControls
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    public class SpinnerTests : WhiteUITestBase
+    {
+        public SpinnerTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectInputControls();
+        }
+
+        [Test]
+        public void IncrementTest()
+        {
+            var spinner = MainWindow.Get<Spinner>("NumericUpDown");
+            spinner.Value = 4.0;
+            spinner.Increment();
+            Assert.That(spinner.Value, Is.EqualTo(4.2));
+        }
+
+        [Test]
+        public void DecrementTest()
+        {
+            var spinner = MainWindow.Get<Spinner>("NumericUpDown");
+            spinner.Value = 4.0;
+            spinner.Decrement();
+            Assert.That(spinner.Value, Is.EqualTo(3.8));
+        }
+        [Test]
+
+        public void ValueTest()
+        {
+            var spinner = MainWindow.Get<Spinner>("NumericUpDown");
+            spinner.Value = 4.0;
+            Assert.That(spinner.Value, Is.EqualTo(4));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/TextBoxTest.cs b/src/TestStack.White.UITests/ControlTests/InputControls/TextBoxTest.cs
deleted file mode 100644
index e66d885f..00000000
--- a/src/TestStack.White.UITests/ControlTests/InputControls/TextBoxTest.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Windows;
-using TestStack.White.InputDevices;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.ListViewItems;
-using TestStack.White.Utility;
-using TestStack.White.WindowsAPI;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.InputControls
-{
-    public class TextBoxTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectInputControls();
-            RunTest(IsReadOnly);
-            RunTest(CopyTest);
-            RunTest(EnterText);
-            RunTest(EnterBulkText);
-            RunTest(SuggestionList, WindowsFramework.WinForms);
-            RunTest(SelectFromSuggestionList, WindowsFramework.WinForms);
-        }
-
-        void EnterText()
-        {
-            var textBox = MainWindow.Get<TextBox>("TextBox");
-            textBox.Text = "somethingElse";
-            Assert.Equal("somethingElse", textBox.Text);
-            Assert.Equal("Text Changed", textBox.HelpText);
-            textBox.Text = "";
-            Assert.Equal("", textBox.Text);
-            textBox.Text = "againSomethingElse";
-            Assert.Equal("againSomethingElse", textBox.Text);
-        }
-
-        void EnterBulkText()
-        {
-            var textBox = MainWindow.Get<TextBox>("TextBox");
-            textBox.BulkText = "somethingElse";
-            Assert.Equal("somethingElse", textBox.Text);
-        }
-
-        void CopyTest()
-        {
-            var textBox = MainWindow.Get<TextBox>("TextBox");
-            AttachedKeyboard attachedKeyboard = MainWindow.Keyboard;
-            textBox.Text = "userText";
-            attachedKeyboard.HoldKey(KeyboardInput.SpecialKeys.CONTROL);
-            attachedKeyboard.Enter("ac");
-            attachedKeyboard.LeaveKey(KeyboardInput.SpecialKeys.CONTROL);
-
-
-            //check the text is the same as that on the clipboard
-            Retry.For(() =>
-            {
-                string clipbrdText = Clipboard.GetText();
-                Assert.Equal(textBox.Text, clipbrdText);
-            }, TimeSpan.FromSeconds(5));
-        }
-
-        void SuggestionList()
-        {
-            var textBox = MainWindow.Get<WinFormTextBox>("TextBox");
-            textBox.Text = "h";
-            SuggestionList suggestionList = textBox.SuggestionList;
-            Assert.Equal(2, suggestionList.Items.Count);
-            Assert.Equal("hello", suggestionList.Items[0]);
-            Assert.Equal("hi", suggestionList.Items[1]);
-        }
-
-        void SelectFromSuggestionList()
-        {
-            var textBox = MainWindow.Get<WinFormTextBox>("TextBox");
-            textBox.Enter("h");
-            SuggestionList suggestionList = textBox.SuggestionList;
-            suggestionList.Select("hello");
-            Assert.Equal("hello", textBox.Text);
-        }
-
-        void IsReadOnly()
-        {
-            var textBox = MainWindow.Get<TextBox>("TextBox");
-            Assert.Equal(false, textBox.IsReadOnly);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/TextBoxTests.cs b/src/TestStack.White.UITests/ControlTests/InputControls/TextBoxTests.cs
new file mode 100644
index 00000000..5de0da68
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/InputControls/TextBoxTests.cs
@@ -0,0 +1,101 @@
+using NUnit.Framework;
+using System;
+using System.Threading;
+using System.Windows;
+using TestStack.White.UIItems;
+using TestStack.White.Utility;
+using TestStack.White.WindowsAPI;
+
+namespace TestStack.White.UITests.ControlTests.InputControls
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class TextBoxTests : WhiteUITestBase
+    {
+        public TextBoxTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectInputControls();
+        }
+
+        [Test]
+        public void EnterTextTest()
+        {
+            var textBox = MainWindow.Get<TextBox>("TextBox");
+            textBox.Text = "somethingElse";
+            Assert.That(textBox.Text, Is.EqualTo("somethingElse"));
+            Assert.That(textBox.HelpText, Is.EqualTo("Text Changed"));
+            textBox.Text = "";
+            Assert.That(textBox.Text, Is.EqualTo(""));
+            textBox.Text = "againSomethingElse";
+            Assert.That(textBox.Text, Is.EqualTo("againSomethingElse"));
+        }
+
+        [Test]
+        public void EnterBulkTextTest()
+        {
+            var textBox = MainWindow.Get<TextBox>("TextBox");
+            textBox.BulkText = "somethingElse";
+            Assert.That(textBox.Text, Is.EqualTo("somethingElse"));
+        }
+
+        [Test, Apartment(ApartmentState.STA)]
+        public void CopyTest()
+        {
+            var textBox = MainWindow.Get<TextBox>("TextBox");
+            var attachedKeyboard = MainWindow.Keyboard;
+            textBox.Text = "userText";
+            attachedKeyboard.HoldKey(KeyboardInput.SpecialKeys.CONTROL);
+            attachedKeyboard.Enter("ac");
+            attachedKeyboard.LeaveKey(KeyboardInput.SpecialKeys.CONTROL);
+
+            //check the text is the same as that on the clipboard
+            Retry.For(() =>
+            {
+                var clipbrdText = Clipboard.GetText();
+                Assert.That(clipbrdText, Is.EqualTo(textBox.Text));
+            }, TimeSpan.FromSeconds(5));
+        }
+
+        [Test]
+        public void SuggestionListTest()
+        {
+            if (Framework != WindowsFramework.WinForms)
+            {
+                Assert.Ignore();
+            }
+            var textBox = MainWindow.Get<WinFormTextBox>("TextBox");
+            textBox.Text = "h";
+            var suggestionList = textBox.SuggestionList;
+            Assert.That(suggestionList.Items, Has.Count.EqualTo(2));
+            Assert.That(suggestionList.Items[0], Is.EqualTo("hello"));
+            Assert.That(suggestionList.Items[1], Is.EqualTo("hi"));
+        }
+
+        [Test]
+        public void SelectFromSuggestionListTest()
+        {
+            if (Framework != WindowsFramework.WinForms)
+            {
+                Assert.Ignore();
+            }
+            var textBox = MainWindow.Get<WinFormTextBox>("TextBox");
+            textBox.Enter("h");
+            var suggestionList = textBox.SuggestionList;
+            suggestionList.Select("hello");
+            Assert.That(textBox.Text, Is.EqualTo("hello"));
+        }
+
+        [Test]
+        public void IsReadOnlyTest()
+        {
+            var textBox = MainWindow.Get<TextBox>("TextBox");
+            Assert.That(textBox.IsReadOnly, Is.False);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/TristateItemTest.cs b/src/TestStack.White.UITests/ControlTests/InputControls/TristateItemTest.cs
deleted file mode 100644
index d9624735..00000000
--- a/src/TestStack.White.UITests/ControlTests/InputControls/TristateItemTest.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System.Collections.Generic;
-using System.Windows.Automation;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.InputControls
-{
-    public class TristateItemTest : WhiteTestBase
-    {
-        void TristateCheckbox()
-        {
-            SelectInputControls();
-            var checkBox = MainWindow.Get<CheckBox>("TriStateCheckBox");
-            Assert.Equal(ToggleState.Indeterminate, checkBox.State);
-            checkBox.State = ToggleState.On;
-            Assert.Equal(ToggleState.On, checkBox.State);
-            checkBox.State = ToggleState.Off;
-            Assert.Equal(ToggleState.Off, checkBox.State);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(TristateCheckbox);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/InputControls/TristateItemTests.cs b/src/TestStack.White.UITests/ControlTests/InputControls/TristateItemTests.cs
new file mode 100644
index 00000000..cb326628
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/InputControls/TristateItemTests.cs
@@ -0,0 +1,34 @@
+using NUnit.Framework;
+using System.Windows.Automation;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests.InputControls
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class TristateItemTests : WhiteUITestBase
+    {
+        public TristateItemTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectInputControls();
+        }
+
+        [Test]
+        public void TristateCheckboxTest()
+        {
+            SelectInputControls();
+            var checkBox = MainWindow.Get<CheckBox>("TriStateCheckBox");
+            Assert.That(checkBox.State, Is.EqualTo(ToggleState.Indeterminate));
+            checkBox.State = ToggleState.On;
+            Assert.That(checkBox.State, Is.EqualTo(ToggleState.On));
+            checkBox.State = ToggleState.Off;
+            Assert.That(checkBox.State, Is.EqualTo(ToggleState.Off));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/LabelTest.cs b/src/TestStack.White.UITests/ControlTests/LabelTest.cs
deleted file mode 100644
index 8aa8feb3..00000000
--- a/src/TestStack.White.UITests/ControlTests/LabelTest.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class LabelTest : WhiteTestBase
-    {
-        void Text()
-        {
-            var label = MainWindow.Get<Label>("DateTimePickerLabel");
-            Assert.NotEqual(null, label.Text);
-        }
-
-        void FindTextBlock()
-        {
-            var label = MainWindow.Get<Label>("PasswordTextBlock");
-            Assert.NotEqual(null, label);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectInputControls();
-            RunTest(Text);
-            RunTest(FindTextBlock, WindowsFramework.Wpf);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/LabelTests.cs b/src/TestStack.White.UITests/ControlTests/LabelTests.cs
new file mode 100644
index 00000000..ccf5cee1
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/LabelTests.cs
@@ -0,0 +1,39 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class LabelTests : WhiteUITestBase
+    {
+        public LabelTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectInputControls();
+        }
+
+        [Test]
+        public void TextTest()
+        {
+            var label = MainWindow.Get<Label>("DateTimePickerLabel");
+            Assert.That(label.Text, Is.Not.Null);
+        }
+
+        [Test]
+        public void FindTextBlockTest()
+        {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+            var label = MainWindow.Get<Label>("PasswordTextBlock");
+            Assert.That(label, Is.Not.Null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ListControls/CheckedListBoxTest.cs b/src/TestStack.White.UITests/ControlTests/ListControls/CheckedListBoxTest.cs
deleted file mode 100644
index f9d428d3..00000000
--- a/src/TestStack.White.UITests/ControlTests/ListControls/CheckedListBoxTest.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-﻿using System.Collections.Generic;
-using System.Windows.Automation;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.ListBoxItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.ListControls
-{
-    public class CheckedListBoxTest : WhiteTestBase
-    {
-        private ListBox listBoxUnderTest;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            listBoxUnderTest = MainWindow.Get<ListBox>("CheckedListBox");
-            RunTest(CanCheckItem);
-            RunTest(CheckSelectedItem);
-            RunTest(CheckUncheckItem);
-        }
-
-        void CanCheckItem()
-        {
-            Assert.Equal(false, listBoxUnderTest.IsChecked("Item1"));
-            listBoxUnderTest.Check("Item1");
-            Assert.Equal(true, listBoxUnderTest.IsChecked("Item1"));
-        }
-
-        void CheckSelectedItem()
-        {
-            Assert.Equal(false, listBoxUnderTest.IsChecked("Item2"));
-            var item = listBoxUnderTest.Item("Item2");
-            ((SelectionItemPattern)item.AutomationElement.GetCurrentPattern(SelectionItemPattern.Pattern))
-                .Select();
-            listBoxUnderTest.Check("Item2");
-            Assert.Equal(true, listBoxUnderTest.IsChecked("Item2"));
-        }
-
-        public void CheckUncheckItem()
-        {
-            Assert.Equal(false, listBoxUnderTest.IsChecked("Item3"));
-            listBoxUnderTest.Check("Item3");
-            Assert.Equal(true, listBoxUnderTest.IsChecked("Item3"));
-
-            listBoxUnderTest.UnCheck("Item3");
-            Assert.Equal(false, listBoxUnderTest.IsChecked("Item3"));
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ListControls/CheckedListBoxTests.cs b/src/TestStack.White.UITests/ControlTests/ListControls/CheckedListBoxTests.cs
new file mode 100644
index 00000000..f67f6d08
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/ListControls/CheckedListBoxTests.cs
@@ -0,0 +1,48 @@
+﻿using NUnit.Framework;
+using System.Windows.Automation;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.ListBoxItems;
+
+namespace TestStack.White.UITests.ControlTests.ListControls
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class CheckedListBoxTests : WhiteUITestBase
+    {
+        public CheckedListBoxTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void CanCheckItemTest()
+        {
+            var listBoxUnderTest = MainWindow.Get<ListBox>("CheckedListBox");
+            Assert.That(listBoxUnderTest.IsChecked("Item1"), Is.False);
+            listBoxUnderTest.Check("Item1");
+            Assert.That(listBoxUnderTest.IsChecked("Item1"), Is.True);
+        }
+
+        [Test]
+        public void CheckSelectedItemTest()
+        {
+            var listBoxUnderTest = MainWindow.Get<ListBox>("CheckedListBox");
+            Assert.That(listBoxUnderTest.IsChecked("Item2"), Is.False);
+            var item = listBoxUnderTest.Item("Item2");
+            ((SelectionItemPattern)item.AutomationElement.GetCurrentPattern(SelectionItemPattern.Pattern)).Select();
+            listBoxUnderTest.Check("Item2");
+            Assert.That(listBoxUnderTest.IsChecked("Item2"), Is.True);
+        }
+
+        [Test]
+        public void CheckUncheckItemTest()
+        {
+            var listBoxUnderTest = MainWindow.Get<ListBox>("CheckedListBox");
+            Assert.That(listBoxUnderTest.IsChecked("Item3"), Is.False);
+            listBoxUnderTest.Check("Item3");
+            Assert.That(listBoxUnderTest.IsChecked("Item3"), Is.True);
+            listBoxUnderTest.UnCheck("Item3");
+            Assert.That(listBoxUnderTest.IsChecked("Item3"), Is.False);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ListControls/ComboBoxTests.cs b/src/TestStack.White.UITests/ControlTests/ListControls/ComboBoxTests.cs
index 1ed9fc01..b4d27bd9 100644
--- a/src/TestStack.White.UITests/ControlTests/ListControls/ComboBoxTests.cs
+++ b/src/TestStack.White.UITests/ControlTests/ListControls/ComboBoxTests.cs
@@ -1,38 +1,45 @@
-﻿using System.Collections.Generic;
+﻿using NUnit.Framework;
 using System.Windows.Automation;
 using TestStack.White.Configuration;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.Finders;
 using TestStack.White.UIItems.ListBoxItems;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests.ListControls
 {
-    public class ComboBoxTests : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class ComboBoxTests : WhiteUITestBase
     {
         protected ComboBox ComboBoxUnderTest { get; set; }
 
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public ComboBoxTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
         {
             ComboBoxUnderTest = MainWindow.Get<ComboBox>(SearchCriteria.ByAutomationId("AComboBox"));
-            RunTest(ListItemInComboBoxWithoutTextAvailableInitially, WindowsFramework.Wpf);
-            RunTest(ComboBoxWithAutoExpandCollapsedOnceItemsAreRetrieved);
-            RunTest(ComboBoxOnlyCollapsesWhenExpansionWasForItemRetrieval);
-            RunTest(CanSelectItemAtTopOfList);
-            RunTest(CanGetAllItems);
-            RunTest(CanSelectItemAtBottomOfList);
-            RunTest(CanSelectItemAtTopOfList); // Once an item is selected at the bottom of the list, White couldn't select at the top again
-            RunTest(CanSelectByIndex);
-            RunTest(CanSelectReallyLongText);
-            RunTest(SetValue);
         }
 
-        void ListItemInComboBoxWithoutTextAvailableInitially()
+        [Test]
+        public void ListItemInComboBoxWithoutTextAvailableInitiallyTest()
         {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+
+            // Restart the application and reinitialize
+            Restart();
+            ComboBoxUnderTest = MainWindow.Get<ComboBox>(SearchCriteria.ByAutomationId("AComboBox"));
+
             try
             {
                 CoreAppXmlConfiguration.Instance.ComboBoxItemsPopulatedWithoutDropDownOpen = false;
-                Assert.Equal(0, ComboBoxUnderTest.Items.Count);
+                Assert.That(ComboBoxUnderTest.Items, Has.Count.EqualTo(0));
             }
             finally
             {
@@ -40,7 +47,8 @@ void ListItemInComboBoxWithoutTextAvailableInitially()
             }
         }
 
-        void ComboBoxOnlyCollapsesWhenExpansionWasForItemRetrieval()
+        [Test]
+        public void ComboBoxOnlyCollapsesWhenExpansionWasForItemRetrievalTest()
         {
             // Arrange
             var expandCollapsePattern = (ExpandCollapsePattern)ComboBoxUnderTest.AutomationElement.GetCurrentPattern(ExpandCollapsePattern.Pattern);
@@ -54,13 +62,13 @@ void ComboBoxOnlyCollapsesWhenExpansionWasForItemRetrieval()
 
                 // Act
 #pragma warning disable 168
-// ReSharper disable once UnusedVariable
+                // ReSharper disable once UnusedVariable
                 var items = ComboBoxUnderTest.Items;
 #pragma warning restore 168
 
                 // Assert
                 var expansionState = expandCollapsePattern.Current.ExpandCollapseState;
-                Assert.Equal(ExpandCollapseState.Expanded, expansionState);
+                Assert.That(expansionState, Is.EqualTo(ExpandCollapseState.Expanded));
             }
             finally
             {
@@ -69,7 +77,8 @@ void ComboBoxOnlyCollapsesWhenExpansionWasForItemRetrieval()
             }
         }
 
-        void ComboBoxWithAutoExpandCollapsedOnceItemsAreRetrieved()
+        [Test]
+        public void ComboBoxWithAutoExpandCollapsedOnceItemsAreRetrievedTest()
         {
             // Arrange
             var config = CoreAppXmlConfiguration.Instance;
@@ -80,14 +89,14 @@ void ComboBoxWithAutoExpandCollapsedOnceItemsAreRetrieved()
                 // Act
 #pragma warning disable 168
                 // Required to force the expansion of the combobox
-// ReSharper disable once UnusedVariable
+                // ReSharper disable once UnusedVariable
                 var items = ComboBoxUnderTest.Items;
 #pragma warning restore 168
 
                 // Assert
                 var expansionState = (ExpandCollapseState)ComboBoxUnderTest.AutomationElement.GetCurrentPropertyValue(ExpandCollapsePattern.ExpandCollapseStateProperty);
                 // The combobox should have been collapsed after the items were retrieved
-                Assert.Equal(ExpandCollapseState.Collapsed, expansionState);
+                Assert.That(expansionState, Is.EqualTo(ExpandCollapseState.Collapsed));
             }
             finally
             {
@@ -96,48 +105,48 @@ void ComboBoxWithAutoExpandCollapsedOnceItemsAreRetrieved()
 
         }
 
-        void CanSelectByIndex()
+        [Test]
+        public void CanSelectByIndexTest()
         {
             ComboBoxUnderTest.Select(4);
-            Assert.Equal("Test5", ComboBoxUnderTest.SelectedItemText);
+            Assert.That(ComboBoxUnderTest.SelectedItemText, Is.EqualTo("Test5"));
         }
 
-        void CanSelectItemAtBottomOfList()
+        [Test]
+        public void CanSelectItemAtBottomOfListTest()
         {
             ComboBoxUnderTest.Select("Test19");
-            Assert.Equal("Test19", ComboBoxUnderTest.SelectedItemText);
+            Assert.That(ComboBoxUnderTest.SelectedItemText, Is.EqualTo("Test19"));
         }
 
-        void CanGetAllItems()
+        [Test]
+        public void CanGetAllItemsTest()
         {
             var items = ComboBoxUnderTest.Items;
-            Assert.Equal(21, items.Count);
-            Assert.Equal("Test", items[0].Name);
-            Assert.Equal("Test20", items[19].Name);
+            Assert.That(items, Has.Count.EqualTo(21));
+            Assert.That(items[0].Name, Is.EqualTo("Test"));
+            Assert.That(items[19].Name, Is.EqualTo("Test20"));
         }
 
-        void CanSelectItemAtTopOfList()
+        [Test]
+        public void CanSelectItemAtTopOfListTest()
         {
             ComboBoxUnderTest.Select("Test2");
-            Assert.Equal("Test2", ComboBoxUnderTest.SelectedItemText);
+            Assert.That(ComboBoxUnderTest.SelectedItemText, Is.EqualTo("Test2"));
         }
 
-        void CanSelectReallyLongText()
+        [Test]
+        public void CanSelectReallyLongTextTest()
         {
             ComboBoxUnderTest.Select("ReallyReallyReallyLongTextHere");
-            Assert.Equal("ReallyReallyReallyLongTextHere", ComboBoxUnderTest.SelectedItem.Text);
+            Assert.That(ComboBoxUnderTest.SelectedItem.Text, Is.EqualTo("ReallyReallyReallyLongTextHere"));
         }
 
-        void SetValue()
+        [Test]
+        public void SetValueTest()
         {
             ComboBoxUnderTest.SetValue("Test4");
-            Assert.Equal("Test4", ComboBoxUnderTest.SelectedItem.Text);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
+            Assert.That(ComboBoxUnderTest.SelectedItem.Text, Is.EqualTo("Test4"));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ListControls/DataBoundComboBoxTests.cs b/src/TestStack.White.UITests/ControlTests/ListControls/DataBoundComboBoxTests.cs
index 256759fb..b2d396fc 100644
--- a/src/TestStack.White.UITests/ControlTests/ListControls/DataBoundComboBoxTests.cs
+++ b/src/TestStack.White.UITests/ControlTests/ListControls/DataBoundComboBoxTests.cs
@@ -1,43 +1,37 @@
-﻿using System.Collections.Generic;
+﻿using NUnit.Framework;
 using TestStack.White.Configuration;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.ListBoxItems;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests.ListControls
 {
-    public class DataBoundComboBoxTests : WhiteTestBase
+    [TestFixture(WindowsFramework.Wpf)]
+    public class DataBoundComboBoxTests : WhiteUITestBase
     {
-        protected ComboBox ComboBoxUnderTest { get; set; }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public DataBoundComboBoxTests(WindowsFramework framework)
+            : base(framework)
         {
-            ComboBoxUnderTest = MainWindow.Get<ComboBox>("DataBoundComboBox");
-            RunTest(CanSelectDataboundItems);
         }
 
-        private void CanSelectDataboundItems()
+        [Test]
+        public void CanSelectDataboundItemsTest()
         {
+            var comboBoxUnderTest = MainWindow.Get<ComboBox>("DataBoundComboBox");
             ListItems items;
             CoreAppXmlConfiguration.Instance.ComboBoxItemsPopulatedWithoutDropDownOpen = false;
             try
             {
-                items = ComboBoxUnderTest.Items;
-                Assert.Equal(0, items.Count);
+                items = comboBoxUnderTest.Items;
+                Assert.That(items, Has.Count.EqualTo(0));
             }
             finally
             {
                 CoreAppXmlConfiguration.Instance.ComboBoxItemsPopulatedWithoutDropDownOpen = true;
             }
 
-            items = ComboBoxUnderTest.Items;
-            Assert.Equal(5, items.Count);
-            Assert.Equal("Test", items[0].Text);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
+            items = comboBoxUnderTest.Items;
+            Assert.That(items, Has.Count.EqualTo(5));
+            Assert.That(items[0].Text, Is.EqualTo("Test"));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ListControls/EditableComboBoxTests.cs b/src/TestStack.White.UITests/ControlTests/ListControls/EditableComboBoxTests.cs
index d36d2221..313806b1 100644
--- a/src/TestStack.White.UITests/ControlTests/ListControls/EditableComboBoxTests.cs
+++ b/src/TestStack.White.UITests/ControlTests/ListControls/EditableComboBoxTests.cs
@@ -1,38 +1,39 @@
-﻿using System.Collections.Generic;
+﻿using NUnit.Framework;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.ListBoxItems;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests.ListControls
 {
-    public class EditableComboBoxTests : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class EditableComboBoxTests : WhiteUITestBase
     {
         protected ComboBox ComboBoxUnderTest { get; set; }
 
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public EditableComboBoxTests(WindowsFramework framework)
+            : base(framework)
         {
-            ComboBoxUnderTest = MainWindow.Get<ComboBox>("EditableComboBox");
-            RunTest(SetValueInEditableComboBox);
-            RunTest(SelectItemInEditableComboBox);
         }
 
-        private void SetValueInEditableComboBox()
+        [OneTimeSetUp]
+        public void Setup()
         {
-            ComboBoxUnderTest.EditableText = "foobar";
-            Assert.Equal("foobar", ComboBoxUnderTest.EditableText);
+            ComboBoxUnderTest = MainWindow.Get<ComboBox>("EditableComboBox");
         }
 
-        private void SelectItemInEditableComboBox()
+        [Test]
+        public void SetValueInEditableComboBoxTest()
         {
-            ComboBoxUnderTest.Select("Test3");
-            Assert.Equal("Test3", ComboBoxUnderTest.EditableText);
-            Assert.Equal("Test3", ComboBoxUnderTest.SelectedItemText);
+            ComboBoxUnderTest.EditableText = "foobar";
+            Assert.That(ComboBoxUnderTest.EditableText, Is.EqualTo("foobar"));
         }
 
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
+        [Test]
+        public void SelectItemInEditableComboBoxTest()
         {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
+            ComboBoxUnderTest.Select("Test3");
+            Assert.That(ComboBoxUnderTest.EditableText, Is.EqualTo("Test3"));
+            Assert.That(ComboBoxUnderTest.SelectedItemText, Is.EqualTo("Test3"));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ListControls/ListBoxTests.cs b/src/TestStack.White.UITests/ControlTests/ListControls/ListBoxTests.cs
deleted file mode 100644
index 9ff96cc5..00000000
--- a/src/TestStack.White.UITests/ControlTests/ListControls/ListBoxTests.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.Configuration;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.Finders;
-using TestStack.White.UIItems.ListBoxItems;
-using TestStack.White.UIItems.WPFUIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.ListControls
-{
-    public class ListBoxWithScrollBarTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(SelectItemNotVisibleBecauseOfScrollBar);
-            RunTest(ListItemContainingTextbox, WindowsFramework.Wpf);
-            RunTest(FindNonExistentObject, WindowsFramework.Wpf);
-            RunTest(ListBoxWithScrollBarWithChangingItems, WindowsFramework.Wpf);
-        }
-
-        void SelectItemNotVisibleBecauseOfScrollBar()
-        {
-            var listBox = MainWindow.Get<ListBox>("ListBoxWithVScrollBar");
-            listBox.Select("0");
-            ListItem selectedItem = listBox.SelectedItem;
-            Assert.Equal("0", selectedItem.Text);
-        }
-
-        void ListItemContainingTextbox()
-        {
-            var listBox = MainWindow.Get<ListBox>("ListBoxWpf");
-            var listItem = (WPFListItem)listBox.Items.Find(item => "Hrishikesh".Equals(item.Text));
-            var textBox = listItem.Get<TextBox>(SearchCriteria.All);
-            Assert.NotNull(textBox);
-            textBox.Text = "Hrishikesh M";
-            Assert.Equal("Hrishikesh M", listItem.Text);
-        }
-
-        void FindNonExistentObject()
-        {
-            var listBox = MainWindow.Get<ListBox>("ListBoxWpf");
-            var listItem = (WPFListItem)listBox.Items.Find(item => item.Text.StartsWith("Hrishikesh"));
-            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.BusyTimeout = 100))
-            {
-                var exception = Assert.Throws<AutomationException>(() => listItem.Get<TextBox>(SearchCriteria.ByAutomationId("foo")));
-                Assert.Equal("Failed to get ControlType=edit,AutomationId=foo", exception.Message);
-            }
-        }
-
-        void ListBoxWithScrollBarWithChangingItems()
-        {
-            var listBox = MainWindow.Get<ListBox>("ListBoxWpf");
-            listBox.Select("Spielberg");
-            listBox.Select("Whedon");
-            MainWindow.Get<Button>("ChangeListItems").Click();
-            listBox.Select("Jackson");
-            listBox.Select("Allen");
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ListControls/ListBoxWithScrollBarTests.cs b/src/TestStack.White.UITests/ControlTests/ListControls/ListBoxWithScrollBarTests.cs
new file mode 100644
index 00000000..9a18f026
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/ListControls/ListBoxWithScrollBarTests.cs
@@ -0,0 +1,79 @@
+using NUnit.Framework;
+using System;
+using System.Windows.Automation;
+using TestStack.White.Configuration;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.Finders;
+using TestStack.White.UIItems.ListBoxItems;
+using TestStack.White.UIItems.WPFUIItems;
+
+namespace TestStack.White.UITests.ControlTests.ListControls
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class ListBoxWithScrollBarTests : WhiteUITestBase
+    {
+        public ListBoxWithScrollBarTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void SelectItemNotVisibleBecauseOfScrollBarTest()
+        {
+            var listBox = MainWindow.Get<ListBox>("ListBoxWithVScrollBar");
+            listBox.Select("0");
+            var selectedItem = listBox.SelectedItem;
+            Assert.That(selectedItem.Text, Is.EqualTo("0"));
+        }
+
+        [Test]
+        public void ListItemContainingTextboxTest()
+        {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+            var listBox = MainWindow.Get<ListBox>("ListBoxWpf");
+            var listItem = (WPFListItem)listBox.Items.Find(item => "Hrishikesh".Equals(item.Text));
+            var textBox = listItem.Get<TextBox>(SearchCriteria.All);
+            Assert.That(textBox, Is.Not.Null);
+            textBox.Text = "Hrishikesh M";
+            Assert.That(listItem.Text, Is.EqualTo("Hrishikesh M"));
+        }
+
+        [Test]
+        public void FindNonExistentObjectTest()
+        {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+            var listBox = MainWindow.Get<ListBox>("ListBoxWpf");
+            var listItem = (WPFListItem)listBox.Items.Find(item => item.Text.StartsWith("Hrishikesh"));
+            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.BusyTimeout = 100))
+            {
+                Assert.That(() => { listItem.Get<TextBox>(SearchCriteria.ByAutomationId("foo")); },
+                    Throws.TypeOf<AutomationException>().With.Message.EqualTo(
+                        String.Format("Failed to get ControlType={0},AutomationId=foo", ControlType.Edit.LocalizedControlType)));
+            }
+        }
+
+        [Test]
+        public void ListBoxWithScrollBarWithChangingItemsTest()
+        {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+            var listBox = MainWindow.Get<ListBox>("ListBoxWpf");
+            listBox.Select("Spielberg");
+            listBox.Select("Whedon");
+            MainWindow.Get<Button>("ChangeListItems").Click();
+            listBox.Select("Jackson");
+            listBox.Select("Allen");
+            // This test modifies the UI, so restart the app for the next test(s)
+            Restart();
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ListControls/ListViewTest.cs b/src/TestStack.White.UITests/ControlTests/ListControls/ListViewTests.cs
similarity index 51%
rename from src/TestStack.White.UITests/ControlTests/ListControls/ListViewTest.cs
rename to src/TestStack.White.UITests/ControlTests/ListControls/ListViewTests.cs
index 6c0ecb97..2f6889ad 100644
--- a/src/TestStack.White.UITests/ControlTests/ListControls/ListViewTest.cs
+++ b/src/TestStack.White.UITests/ControlTests/ListControls/ListViewTests.cs
@@ -1,140 +1,142 @@
-using System.Collections.Generic;
+using NUnit.Framework;
 using TestStack.White.UIItems;
-using TestStack.White.UIItems.ListViewItems;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests.ListControls
 {
-    public class ListViewTest : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class ListViewTests : WhiteUITestBase
     {
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public ListViewTests(WindowsFramework framework)
+            : base(framework)
         {
-            RunTest(CellCount);
-            RunTest(CellText);
-            RunTest(Columns);
-            RunTest(MultiSelect);
-            RunTest(RowCount);
-            RunTest(SelectBasedOnCell);
-            RunTest(SelectRow);
-            RunTest(SelectScrolledRow);
-            RunTest(SelectedRow);
-            RunTest(SelectedRows);
-            RunTest(SelectWhenHorizontalScrollIsPresent);
         }
 
-        void SelectRow()
+        [Test]
+        public void SelectRowTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
                 listView.Select(0);
-                ListViewRow firstRow = listView.Rows[0];
-                Assert.Equal(true, firstRow.IsSelected);
-                Assert.Equal("ListView item selected - " + 0, listView.HelpText);
+                var firstRow = listView.Rows[0];
+                Assert.That( firstRow.IsSelected, Is.True);
+                Assert.That(listView.HelpText, Is.EqualTo("ListView item selected - " + 0));
                 listView.Select(1);
-                ListViewRow secondRow = listView.Rows[1];
-                Assert.Equal(true, secondRow.IsSelected);
+                var secondRow = listView.Rows[1];
+                Assert.That( secondRow.IsSelected, Is.True);
             }
         }
-        void SelectScrolledRow()
+
+        [Test]
+        public void SelectScrolledRowTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
                 listView.Select("Key", "Action15");
-                Assert.Equal("App15", listView.SelectedRows[0].Cells["Value"].Text);
+                Assert.That(listView.SelectedRows[0].Cells["Value"].Text, Is.EqualTo("App15"));
             }
         }
-        void SelectedRow()
+
+        [Test]
+        public void SelectedRowTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
                 listView.Select(0);
-                ListViewRow listViewRow = listView.SelectedRows[0];
-                Assert.Equal("Search", listViewRow.Cells["Key"].Text);
+                var listViewRow = listView.SelectedRows[0];
+                Assert.That(listViewRow.Cells["Key"].Text, Is.EqualTo("Search"));
             }
         }
 
-        void SelectBasedOnCell()
+        [Test]
+        public void SelectBasedOnCellTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
                 listView.Select("Key", "Mail");
-                Assert.Equal("Mail", listView.SelectedRows[0].Cells["Key"].Text);
+                Assert.That(listView.SelectedRows[0].Cells["Key"].Text, Is.EqualTo("Mail"));
             }
         }
 
-        void Columns()
+        [Test]
+        public void ColumnsTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
-                ListViewColumns columns = listView.Header.Columns;
-                Assert.Equal(2, columns.Count);
-                Assert.Equal("Key", columns[0].Name);
-                Assert.Equal("Value", columns[1].Name);
+                var columns = listView.Header.Columns;
+                Assert.That(columns.Count, Is.EqualTo(2));
+                Assert.That(columns[0].Name, Is.EqualTo("Key"));
+                Assert.That(columns[1].Name, Is.EqualTo("Value"));
             }
         }
-
-        void RowCount()
+        [Test]
+        public void RowCountTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
-                Assert.Equal(18, listView.Rows.Count);
+                Assert.That(listView.Rows.Count, Is.EqualTo(18));
             }
         }
 
-        void CellCount()
+        [Test]
+        public void CellCountTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
-                ListViewRow row = listView.Rows[0];
-                Assert.Equal(2, row.Cells.Count);
+                var row = listView.Rows[0];
+                Assert.That(row.Cells.Count, Is.EqualTo(2));
             }
         }
 
-        void CellText()
+        [Test]
+        public void CellTextTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
-                ListViewRow first = listView.Rows[0];
-                Assert.Equal("Search", first.Cells[0].Text);
-                Assert.Equal("Google", first.Cells[1].Text);
-                ListViewRow second = listView.Rows[1];
-                Assert.Equal("Mail", second.Cells[0].Text);
-                Assert.Equal("GMail", second.Cells[1].Text);
+                var first = listView.Rows[0];
+                Assert.That(first.Cells[0].Text, Is.EqualTo("Search"));
+                Assert.That(first.Cells[1].Text, Is.EqualTo("Google"));
+                var second = listView.Rows[1];
+                Assert.That(second.Cells[0].Text, Is.EqualTo("Mail"));
+                Assert.That(second.Cells[1].Text, Is.EqualTo("GMail"));
             }
         }
 
-        void SelectedRows()
+        [Test]
+        public void SelectedRowsTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
                 listView.Rows[2].Select();
                 listView.Rows[0].Select();
-                ListViewRows rows = listView.SelectedRows;
-                Assert.Equal(1, rows.Count);
+                var rows = listView.SelectedRows;
+                Assert.That(rows.Count, Is.EqualTo(1));
             }
         }
 
-        void MultiSelect()
+        [Test]
+        public void MultiSelectTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
                 var listView = window.Get<ListView>("ListView");
                 listView.Rows[0].Select();
                 listView.Rows[1].MultiSelect();
-                Assert.Equal(2, listView.SelectedRows.Count);
+                Assert.That(listView.SelectedRows.Count, Is.EqualTo(2));
             }
         }
 
-        void SelectWhenHorizontalScrollIsPresent()
+        [Test]
+        public void SelectWhenHorizontalScrollIsPresentTest()
         {
             using (var window = StartScenario("OpenListView", "ListViewWindow"))
             {
@@ -143,11 +145,5 @@ void SelectWhenHorizontalScrollIsPresent()
                     .Select();
             }
         }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/MenuItems/MenuTest.cs b/src/TestStack.White.UITests/ControlTests/MenuItems/MenuTest.cs
deleted file mode 100644
index 81414e11..00000000
--- a/src/TestStack.White.UITests/ControlTests/MenuItems/MenuTest.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.Finders;
-using TestStack.White.UIItems.MenuItems;
-using TestStack.White.UIItems.WindowStripControls;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.MenuItems
-{
-    public class MenuTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(FindMenuBar);
-            RunTest(Click);
-            RunTest(FindByAutomationId, WindowsFramework.Wpf);
-            RunTest(FindMultiLevelMenuItem);
-        }
-
-        void FindMenuBar()
-        {
-            Assert.NotNull(MainWindow.MenuBar);
-            Assert.NotNull(MainWindow.MenuBar.MenuItem("File"));
-            Assert.Equal(1, MainWindow.MenuBars.Count);
-        }
-
-        void Click()
-        {
-            Menu menu = MainWindow.MenuBar.MenuItem("File", "Click Me");
-            menu.Click();
-            Assert.Equal(MainWindow.HelpText, "Click Me Clicked");
-        }
-
-        void FindByAutomationId()
-        {
-            MenuBar menuBar = MainWindow.MenuBar;
-            Assert.NotNull(menuBar.MenuItemBy(SearchCriteria.ByAutomationId("FileId")));
-        }
-
-        void FindMultiLevelMenuItem()
-        {
-            MenuBar menuBar = MainWindow.MenuBar;
-            Menu menu = menuBar.MenuItem("Multi-Level Menu");
-            Assert.NotNull(menu.SubMenu(SearchCriteria.ByText("Level 1"))
-                .SubMenu("Level 2")
-                .SubMenu("Level 3"));
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/MenuItems/MenuTests.cs b/src/TestStack.White.UITests/ControlTests/MenuItems/MenuTests.cs
new file mode 100644
index 00000000..f5108a62
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/MenuItems/MenuTests.cs
@@ -0,0 +1,51 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.Finders;
+
+namespace TestStack.White.UITests.ControlTests.MenuItems
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class MenuTests : WhiteUITestBase
+    {
+        public MenuTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void FindMenuBarTest()
+        {
+            Assert.That(MainWindow.MenuBar, Is.Not.Null);
+            Assert.That(MainWindow.MenuBar.MenuItem("File"), Is.Not.Null);
+            Assert.That(MainWindow.MenuBars, Has.Count.EqualTo(1));
+        }
+
+        [Test]
+        public void ClickTest()
+        {
+            var menu = MainWindow.MenuBar.MenuItem("File", "Click Me");
+            menu.Click();
+            Assert.That("Click Me Clicked", Is.EqualTo(MainWindow.HelpText));
+        }
+
+        [Test]
+        public void FindByAutomationIdTest()
+        {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+            var menuBar = MainWindow.MenuBar;
+            Assert.That(menuBar.MenuItemBy(SearchCriteria.ByAutomationId("FileId")), Is.Not.Null);
+        }
+
+        [Test]
+        public void FindMultiLevelMenuItemTest()
+        {
+            var menuBar = MainWindow.MenuBar;
+            var menu = menuBar.MenuItem("Multi-Level Menu");
+            Assert.That(menu.SubMenu(SearchCriteria.ByText("Level 1")).SubMenu("Level 2").SubMenu("Level 3"), Is.Not.Null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/MenuItems/PopUpMenuTest.cs b/src/TestStack.White.UITests/ControlTests/MenuItems/PopUpMenuTest.cs
deleted file mode 100644
index 83ce8077..00000000
--- a/src/TestStack.White.UITests/ControlTests/MenuItems/PopUpMenuTest.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.ListBoxItems;
-using TestStack.White.UIItems.MenuItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.MenuItems
-{
-    public class PopUpMenuTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectListControls();
-            RunTest(()=>GetPopupMenuItems(framework));
-            RunTest(ClickOnPopupMenu);
-            RunTest(ClickOnNestedMenu);
-        }
-
-        void GetPopupMenuItems(WindowsFramework framework)
-        {
-            MainWindow.Get<ListBox>("ListBoxWithVScrollBar").RightClick();
-            var popup = MainWindow.Popup;
-            int numberOfItems = framework == WindowsFramework.Wpf ? 2 : 4;
-            Assert.Equal(numberOfItems, popup.Items.Count);
-        }
-
-        void ClickOnPopupMenu()
-        {
-            var listBox = MainWindow.Get<ListBox>("ListBoxWithVScrollBar");
-            listBox.RightClick();
-            Assert.True(MainWindow.HasPopup());
-            Menu menu = MainWindow.PopupMenu("Root2");
-            menu.Click();
-            Assert.Equal("Root2 Clicked", listBox.HelpText);
-        }
-
-        void ClickOnNestedMenu()
-        {
-            var listBox = MainWindow.Get<ListBox>("ListBoxWithVScrollBar");
-            listBox.RightClick();
-            MainWindow.PopupMenu("Root", "Level1", "Level2").Click();
-            Assert.Equal("Level 2 Clicked", listBox.HelpText);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/MenuItems/PopUpMenuTests.cs b/src/TestStack.White.UITests/ControlTests/MenuItems/PopUpMenuTests.cs
new file mode 100644
index 00000000..05aeed5c
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/MenuItems/PopUpMenuTests.cs
@@ -0,0 +1,51 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.ListBoxItems;
+
+namespace TestStack.White.UITests.ControlTests.MenuItems
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class PopUpMenuTests : WhiteUITestBase
+    {
+        public PopUpMenuTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectListControls();
+        }
+
+        [Test]
+        public void GetPopupMenuItemsTest()
+        {
+            MainWindow.Get<ListBox>("ListBoxWithVScrollBar").RightClick();
+            var popup = MainWindow.Popup;
+            var numberOfItems = Framework == WindowsFramework.Wpf ? 2 : 4;
+            Assert.That(popup.Items, Has.Count.EqualTo(numberOfItems));
+        }
+
+        [Test]
+        public void ClickOnPopupMenuTest()
+        {
+            var listBox = MainWindow.Get<ListBox>("ListBoxWithVScrollBar");
+            listBox.RightClick();
+            Assert.That(MainWindow.HasPopup(), Is.True);
+            var menu = MainWindow.PopupMenu("Root2");
+            menu.Click();
+            Assert.That(listBox.HelpText, Is.EqualTo("Root2 Clicked"));
+        }
+
+        [Test]
+        public void ClickOnNestedMenuTest()
+        {
+            var listBox = MainWindow.Get<ListBox>("ListBoxWithVScrollBar");
+            listBox.RightClick();
+            MainWindow.PopupMenu("Root", "Level1", "Level2").Click();
+            Assert.That(listBox.HelpText, Is.EqualTo("Level 2 Clicked"));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/PanelTest.cs b/src/TestStack.White.UITests/ControlTests/PanelTest.cs
deleted file mode 100644
index 9daa1b21..00000000
--- a/src/TestStack.White.UITests/ControlTests/PanelTest.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class PanelTest : WhiteTestBase
-    {
-        public void Text()
-        {
-            var panel = MainWindow.Get<Panel>("PanelWithText");
-            Assert.Equal("PanelText", panel.Text);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectOtherControls();
-            RunTest(Text);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/PanelTests.cs b/src/TestStack.White.UITests/ControlTests/PanelTests.cs
new file mode 100644
index 00000000..4e5ef4e6
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/PanelTests.cs
@@ -0,0 +1,27 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    public class PanelTests : WhiteUITestBase
+    {
+        public PanelTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectOtherControls();
+        }
+
+        [Test]
+        public void ReadTextTest()
+        {
+            var panel = MainWindow.Get<Panel>("PanelWithText");
+            Assert.That(panel.Text, Is.EqualTo("PanelText"));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ProgressBarTest.cs b/src/TestStack.White.UITests/ControlTests/ProgressBarTest.cs
deleted file mode 100644
index c71ddc29..00000000
--- a/src/TestStack.White.UITests/ControlTests/ProgressBarTest.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class ProgressBarTest : WhiteTestBase
-    {
-        void MinimumValue()
-        {
-            var bar = MainWindow.Get<ProgressBar>("ProgressBar");
-            Assert.Equal(0, bar.Minimum);
-        }
-
-        void MaximumValue()
-        {
-            var bar = MainWindow.Get<ProgressBar>("ProgressBar");
-            Assert.Equal(100, bar.Maximum);
-        }
-
-        void Value()
-        {
-            var bar = MainWindow.Get<ProgressBar>("ProgressBar");
-            Assert.Equal(50, bar.Value);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectOtherControls();
-            RunTest(MinimumValue);
-            RunTest(MaximumValue);
-            RunTest(Value);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/ProgressBarTests.cs b/src/TestStack.White.UITests/ControlTests/ProgressBarTests.cs
new file mode 100644
index 00000000..531de359
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/ProgressBarTests.cs
@@ -0,0 +1,42 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class ProgressBarTests : WhiteUITestBase
+    {
+        public ProgressBarTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectOtherControls();
+        }
+
+        [Test]
+        public void MinimumValueTest()
+        {
+            var bar = MainWindow.Get<ProgressBar>("ProgressBar");
+            Assert.That(bar.Minimum, Is.EqualTo(0));
+        }
+
+        [Test]
+        public void MaximumValueTest()
+        {
+            var bar = MainWindow.Get<ProgressBar>("ProgressBar");
+            Assert.That(bar.Maximum, Is.EqualTo(100));
+        }
+
+        [Test]
+        public void ValueTest()
+        {
+            var bar = MainWindow.Get<ProgressBar>("ProgressBar");
+            Assert.That(bar.Value, Is.EqualTo(50));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/PropertyGridTest.cs b/src/TestStack.White.UITests/ControlTests/PropertyGridTest.cs
deleted file mode 100644
index d1db35a3..00000000
--- a/src/TestStack.White.UITests/ControlTests/PropertyGridTest.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.PropertyGridItems;
-using TestStack.White.WindowsAPI;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class PropertyGridTest : WhiteTestBase
-    {
-        PropertyGrid propertyGrid;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectPropertyGridTab();
-            propertyGrid = MainWindow.Get<PropertyGrid>("PropertyGrid");
-
-            RunTest(Get);
-            RunTest(Categories);
-            RunTest(BrowseForValue);
-            RunTest(CannotBrowseForValue);
-            RunTest(Properties);
-            RunTest(Property);
-        }
-        void Get()
-        {
-            Assert.NotNull(propertyGrid);
-        }
-
-        void Categories()
-        {
-            List<PropertyGridCategory> categories = propertyGrid.Categories;
-            Assert.Equal(4, categories.Count);
-            Assert.Equal("General", categories[0].Text);
-            Assert.Equal("Input", categories[1].Text);
-            Assert.Equal("Misc", categories[2].Text);
-            Assert.Equal("Number", categories[3].Text);
-        }
-
-        void BrowseForValue()
-        {
-            PropertyGridCategory propertyGridCategory = propertyGrid.Category("Input");
-            PropertyGridProperty property = propertyGridCategory.GetProperty("FileName");
-            property.BrowseForValue();
-            MainWindow.ModalWindow("Open File").Close();
-        }
-
-        void CannotBrowseForValue()
-        {
-            PropertyGridProperty propertyWithoutBrowseButton = propertyGrid.Category("General").GetProperty("WindowSize");
-            Assert.Throws<WhiteException>(()=>propertyWithoutBrowseButton.BrowseForValue());
-        }
-
-        void Properties()
-        {
-            Assert.Equal(3, propertyGrid.Category("General").Properties.Count);
-            Assert.Equal(2, propertyGrid.Category("Misc").Properties.Count);
-            Assert.Equal(2, propertyGrid.Category("Number").Properties.Count);
-        }
-
-        void Property()
-        {
-            PropertyGridProperty gridProperty = propertyGrid.Category("General").Properties[0];
-            Assert.Equal("ToolbarColor", gridProperty.Name);
-            Assert.Equal("Control", gridProperty.Value);
-            gridProperty.Value = "ControlDark";
-            Assert.Equal("ControlDark", gridProperty.Value);
-            Assert.Equal(false, gridProperty.IsReadOnly);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/PropertyGridTests.cs b/src/TestStack.White.UITests/ControlTests/PropertyGridTests.cs
new file mode 100644
index 00000000..acd869e9
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/PropertyGridTests.cs
@@ -0,0 +1,77 @@
+using NUnit.Framework;
+using TestStack.White.Configuration;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.PropertyGridItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    public class PropertyGridTests : WhiteUITestBase
+    {
+        private PropertyGrid propertyGrid;
+
+        public PropertyGridTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectPropertyGridTab();
+            propertyGrid = MainWindow.Get<PropertyGrid>("PropertyGrid");
+        }
+
+        [Test]
+        public void GetTest()
+        {
+            Assert.That(propertyGrid, Is.Not.Null);
+        }
+
+        [Test]
+        public void CategoriesTest()
+        {
+            var categories = propertyGrid.Categories;
+            Assert.That(categories, Has.Count.EqualTo(4));
+            Assert.That(categories, Has.Exactly(1).Matches<PropertyGridCategory>(c => c.Text == "General"));
+            Assert.That(categories, Has.Exactly(1).Matches<PropertyGridCategory>(c => c.Text == "Input"));
+            Assert.That(categories, Has.Exactly(1).Matches<PropertyGridCategory>(c => c.Text == "Number"));
+            Assert.That(categories, Has.Exactly(1).Matches<PropertyGridCategory>(c => c.Text == UIItemIdAppXmlConfiguration.Instance.PropertyGridMiscText));
+        }
+
+        [Test]
+        public void BrowseForValueTest()
+        {
+            var propertyGridCategory = propertyGrid.Category("Input");
+            var property = propertyGridCategory.GetProperty("FileName");
+            property.BrowseForValue();
+            MainWindow.ModalWindow(UIItemIdAppXmlConfiguration.Instance.OpenFileDialogTitle).Close();
+        }
+
+        [Test]
+        public void CannotBrowseForValueTest()
+        {
+            var propertyWithoutBrowseButton = propertyGrid.Category("General").GetProperty("WindowSize");
+            Assert.That(() => { propertyWithoutBrowseButton.BrowseForValue(); }, Throws.TypeOf<WhiteException>());
+        }
+
+        [Test]
+        public void PropertiesTest()
+        {
+            Assert.That(propertyGrid.Category("General").Properties, Has.Count.EqualTo(3));
+            Assert.That(propertyGrid.Category(UIItemIdAppXmlConfiguration.Instance.PropertyGridMiscText).Properties, Has.Count.EqualTo(2));
+            Assert.That(propertyGrid.Category("Number").Properties, Has.Count.EqualTo(2));
+        }
+
+        [Test]
+        public void PropertyTest()
+        {
+            var gridProperty = propertyGrid.Category("General").Properties[0];
+            Assert.That(gridProperty.Name, Is.EqualTo("ToolbarColor"));
+            Assert.That(gridProperty.Value, Is.EqualTo("Control"));
+            gridProperty.Value = "ControlDark";
+            Assert.That(gridProperty.Value, Is.EqualTo("ControlDark"));
+            Assert.That(gridProperty.IsReadOnly, Is.False);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/SliderTest.cs b/src/TestStack.White.UITests/ControlTests/SliderTest.cs
deleted file mode 100644
index e2f3af44..00000000
--- a/src/TestStack.White.UITests/ControlTests/SliderTest.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class SliderTest : WhiteTestBase
-    {
-        private Slider slider;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectOtherControls();
-            slider = MainWindow.Get<Slider>("Slider");
-
-            RunTest(SetValue);
-            RunTest(LargeIncrement);
-            RunTest(LargeDecrement);
-            RunTest(SmallIncrement);
-            RunTest(SmallDecrement);
-        }
-
-        void SetValue()
-        {
-            slider.Value = 5;
-            Assert.Equal(5, slider.Value);
-        }
-
-        void LargeIncrement()
-        {
-            slider.Value = 5;
-            slider.LargeIncrementButton.Click();
-            Assert.Equal(9, slider.Value);
-        }
-
-        void LargeDecrement()
-        {
-            slider.Value = 5;
-            slider.LargeDecrementButton.Click();
-            Assert.Equal(1, slider.Value);
-        }
-
-        void SmallIncrement()
-        {
-            slider.Value = 5;
-            slider.SmallIncrement();
-            Assert.Equal(6, slider.Value);
-        }
-
-        void SmallDecrement()
-        {
-            slider.Value = 5;
-            slider.SmallDecrement();
-            Assert.Equal(4, slider.Value);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/SliderTests.cs b/src/TestStack.White.UITests/ControlTests/SliderTests.cs
new file mode 100644
index 00000000..017e7822
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/SliderTests.cs
@@ -0,0 +1,63 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class SliderTests : WhiteUITestBase
+    {
+        private Slider slider;
+
+        public SliderTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectOtherControls();
+            slider = MainWindow.Get<Slider>("Slider");
+        }
+
+        [Test]
+        public void SetValueTest()
+        {
+            slider.Value = 5;
+            Assert.That(slider.Value, Is.EqualTo(5));
+        }
+
+        [Test]
+        public void LargeIncrementTest()
+        {
+            slider.Value = 5;
+            slider.LargeIncrementButton.Click();
+            Assert.That(slider.Value, Is.EqualTo(9));
+        }
+
+        [Test]
+        public void LargeDecrementTest()
+        {
+            slider.Value = 5;
+            slider.LargeDecrementButton.Click();
+            Assert.That(slider.Value, Is.EqualTo(1));
+        }
+
+        [Test]
+        public void SmallIncrementTest()
+        {
+            slider.Value = 5;
+            slider.SmallIncrement();
+            Assert.That(slider.Value, Is.EqualTo(6));
+        }
+
+        [Test]
+        public void SmallDecrementTest()
+        {
+            slider.Value = 5;
+            slider.SmallDecrement();
+            Assert.That(slider.Value, Is.EqualTo(4));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Splitters/HorizontalThumbTest.cs b/src/TestStack.White.UITests/ControlTests/Splitters/HorizontalThumbTest.cs
deleted file mode 100644
index 86113215..00000000
--- a/src/TestStack.White.UITests/ControlTests/Splitters/HorizontalThumbTest.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.WindowItems;
-using TestStack.White.Utility;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.Splitters
-{
-    public class HorizontalThumbTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            var window = OpenHorizontalSliderWindow();
-            using (new DelegateDisposable(() => CloseSliderWindow(window)))
-            {
-                RunTest(()=>Find(window));
-                RunTest(()=>Slide(window));
-            }
-        }
-
-        public void Find(Window window)
-        {
-            var thumb = window.Get<Thumb>("Splitter");
-            Assert.NotEqual(null, thumb);
-        }
-
-        public void Slide(Window window)
-        {
-            var thumb = window.Get<Thumb>("Splitter");
-            double originalX = thumb.Location.X;
-            thumb.SlideHorizontally(50);
-            Assert.Equal(originalX + 50, thumb.Location.X);
-        }
-        
-        private void CloseSliderWindow(Window window)
-        {
-            window.Close();
-        }
-
-        private Window OpenHorizontalSliderWindow()
-        {
-            MainWindow.Get<Button>("OpenHorizontalSplitterButton").Click();
-            return MainWindow.ModalWindow("HorizontalGridSplitter");
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            // yield return FrameworkId.Silverlight; Has some timing issues
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Splitters/HorizontalThumbTests.cs b/src/TestStack.White.UITests/ControlTests/Splitters/HorizontalThumbTests.cs
new file mode 100644
index 00000000..58041244
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/Splitters/HorizontalThumbTests.cs
@@ -0,0 +1,47 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.WindowItems;
+
+namespace TestStack.White.UITests.ControlTests.Splitters
+{
+    [TestFixture(WindowsFramework.Wpf)]
+    // [TestFixture(WindowsFramework.Silverlight)] ; Has some timing issues
+    public class HorizontalThumbTests : WhiteUITestBase
+    {
+        protected Window Window { get; set; }
+
+        public HorizontalThumbTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            MainWindow.Get<Button>("OpenHorizontalSplitterButton").Click();
+            Window = MainWindow.ModalWindow("HorizontalGridSplitter");
+        }
+
+        [OneTimeTearDown]
+        public void Teardown()
+        {
+            Window.Close();
+        }
+
+        [Test]
+        public void FindTest()
+        {
+            var thumb = Window.Get<Thumb>("Splitter");
+            Assert.That(thumb, Is.Not.Null);
+        }
+
+        [Test]
+        public void SlideTest()
+        {
+            var thumb = Window.Get<Thumb>("Splitter");
+            var originalX = thumb.Location.X;
+            thumb.SlideHorizontally(50);
+            Assert.That(thumb.Location.X, Is.EqualTo(originalX + 50));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Splitters/VerticalThumbTest.cs b/src/TestStack.White.UITests/ControlTests/Splitters/VerticalThumbTest.cs
deleted file mode 100644
index 7fc505b9..00000000
--- a/src/TestStack.White.UITests/ControlTests/Splitters/VerticalThumbTest.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.WindowItems;
-using TestStack.White.Utility;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.Splitters
-{
-    public class VerticalThumbTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            var window = OpenVerticalSliderWindow();
-            using (new DelegateDisposable(() => CloseSliderWindow(window)))
-            {
-                RunTest(() => Find(window));
-                RunTest(() => Slide(window));
-            }
-        }
-
-        public void Find(Window window)
-        {
-            var thumb = window.Get<Thumb>("Splitter");
-            Assert.NotEqual(null, thumb);
-        }
-
-        public void Slide(Window window)
-        {
-            var thumb = window.Get<Thumb>("Splitter");
-            var originalY = thumb.Location.Y;
-            thumb.SlideVertically(50);
-            Assert.Equal(originalY + 50, thumb.Location.Y);
-        }
-
-        private void CloseSliderWindow(Window window)
-        {
-            window.Close();
-        }
-
-        private Window OpenVerticalSliderWindow()
-        {
-            MainWindow.Get<Button>("OpenVerticalSplitterButton").Click();
-            var openVerticalSliderWindow = MainWindow.ModalWindow("VerticalGridSplitter");
-            return openVerticalSliderWindow;
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            // yield return FrameworkId.Silverlight; Has some timing issues
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Splitters/VerticalThumbTests.cs b/src/TestStack.White.UITests/ControlTests/Splitters/VerticalThumbTests.cs
new file mode 100644
index 00000000..d4dbae24
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/Splitters/VerticalThumbTests.cs
@@ -0,0 +1,47 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.WindowItems;
+
+namespace TestStack.White.UITests.ControlTests.Splitters
+{
+    [TestFixture(WindowsFramework.Wpf)]
+    // [TestFixture(WindowsFramework.Silverlight)] ; Has some timing issues
+    public class VerticalThumbTests : WhiteUITestBase
+    {
+        protected Window Window { get; set; }
+
+        public VerticalThumbTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            MainWindow.Get<Button>("OpenVerticalSplitterButton").Click();
+            Window = MainWindow.ModalWindow("VerticalGridSplitter");
+        }
+
+        [OneTimeTearDown]
+        public void Teardown()
+        {
+            Window.Close();
+        }
+
+        [Test]
+        public void FindTest()
+        {
+            var thumb = Window.Get<Thumb>("Splitter");
+            Assert.That(thumb, Is.Not.Null);
+        }
+
+        [Test]
+        public void SlideTest()
+        {
+            var thumb = Window.Get<Thumb>("Splitter");
+            var originalY = thumb.Location.Y;
+            thumb.SlideVertically(50);
+            Assert.That(thumb.Location.Y, Is.EqualTo(originalY + 50));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/TabTest.cs b/src/TestStack.White.UITests/ControlTests/TabTest.cs
deleted file mode 100644
index 06bd2194..00000000
--- a/src/TestStack.White.UITests/ControlTests/TabTest.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.TabItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests
-{
-    public class TabTest : WhiteTestBase
-    {
-        Tab tab;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            tab = MainWindow.Get<Tab>("ControlsTab");
-
-            RunTest(Find);
-            RunTest(()=>AssertChildrenCount(framework));
-            RunTest(ShouldSelectTabPage);
-            RunTest(ShouldSelectTabPageWithName);
-            RunTest(FindControlsInsideTab);
-            RunTest(TabWithReverseDisplayOrderTest, WindowsFramework.WinForms);
-        }
-
-        void Find()
-        {
-            Assert.NotNull(tab);
-        }
-
-        void AssertChildrenCount(WindowsFramework framework)
-        {
-            Assert.Equal(framework == WindowsFramework.Wpf ? 4 : 5, tab.TabCount);
-        }
-
-        void ShouldSelectTabPage()
-        {
-            tab.SelectTabPage(0);
-            Assert.Equal("List Controls", tab.SelectedTab.Name);
-            tab.SelectTabPage(1);
-            Assert.Equal("Input Controls", tab.SelectedTab.Name);
-        }
-
-        void ShouldSelectTabPageWithName()
-        {
-            tab.SelectTabPage("List Controls");
-            Assert.Equal("List Controls", tab.SelectedTab.Name);
-            tab.SelectTabPage("Input Controls");
-            Assert.Equal("Input Controls", tab.SelectedTab.Name);
-        }
-
-        void TabWithReverseDisplayOrderTest()
-        {
-            MainWindow.Get<Button>("ReverseTabOrderButton").Click();
-            var controlsTab = MainWindow.Get<Tab>("ControlsTab");
-            controlsTab.SelectTabPage(2);
-            Assert.Equal("Other Controls", controlsTab.SelectedTab.Name);
-            controlsTab.SelectTabPage(1);
-            Assert.Equal("Input Controls", controlsTab.SelectedTab.Name);
-        }
-
-        void FindControlsInsideTab()
-        {
-            tab.SelectTabPage(1);
-            ITabPage selectedTab = tab.SelectedTab;
-            Assert.NotNull(selectedTab);
-            Assert.NotNull(selectedTab.Get<TextBox>("TextBox"));
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/TabTests.cs b/src/TestStack.White.UITests/ControlTests/TabTests.cs
new file mode 100644
index 00000000..239ed4a1
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/TabTests.cs
@@ -0,0 +1,78 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.TabItems;
+
+namespace TestStack.White.UITests.ControlTests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class TabTests : WhiteUITestBase
+    {
+        private Tab tab;
+
+        public TabTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            tab = MainWindow.Get<Tab>("ControlsTab");
+        }
+
+        [Test]
+        public void FindTest()
+        {
+            Assert.That(tab, Is.Not.Null);
+        }
+
+        [Test]
+        public void AssertChildrenCountTest()
+        {
+            Assert.That(tab.TabCount, Is.EqualTo(Framework == WindowsFramework.Wpf ? 4 : 5));
+        }
+
+        [Test]
+        public void ShouldSelectTabPageTest()
+        {
+            tab.SelectTabPage(0);
+            Assert.That(tab.SelectedTab.Name, Is.EqualTo("List Controls"));
+            tab.SelectTabPage(1);
+            Assert.That(tab.SelectedTab.Name, Is.EqualTo("Input Controls"));
+        }
+
+        [Test]
+        public void ShouldSelectTabPageWithNameTest()
+        {
+            tab.SelectTabPage("List Controls");
+            Assert.That(tab.SelectedTab.Name, Is.EqualTo("List Controls"));
+            tab.SelectTabPage("Input Controls");
+            Assert.That(tab.SelectedTab.Name, Is.EqualTo("Input Controls"));
+        }
+
+        [Test]
+        public void TabWithReverseDisplayOrderTest()
+        {
+            if (Framework != WindowsFramework.WinForms)
+            {
+                Assert.Ignore();
+            }
+            MainWindow.Get<Button>("ReverseTabOrderButton").Click();
+            var controlsTab = MainWindow.Get<Tab>("ControlsTab");
+            controlsTab.SelectTabPage(2);
+            Assert.That(controlsTab.SelectedTab.Name, Is.EqualTo("Other Controls"));
+            controlsTab.SelectTabPage(1);
+            Assert.That(controlsTab.SelectedTab.Name, Is.EqualTo("Input Controls"));
+        }
+
+        [Test]
+        public void FindControlsInsideTabTest()
+        {
+            tab.SelectTabPage(1);
+            var selectedTab = tab.SelectedTab;
+            Assert.That(selectedTab, Is.Not.Null);
+            Assert.That(selectedTab.Get<TextBox>("TextBox"), Is.Not.Null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Table/TableCellTest.cs b/src/TestStack.White.UITests/ControlTests/Table/TableCellTest.cs
deleted file mode 100644
index deae7cc2..00000000
--- a/src/TestStack.White.UITests/ControlTests/Table/TableCellTest.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.TableItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.DataGrid.WinForms
-{
-    public class TableCellTest : WhiteTestBase
-    {
-        TableRow row;
-        Table table;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectDataGridTab();
-            table = MainWindow.Get<Table>("DataGrid");
-            TableRows rows = table.Rows;
-            row = rows[0];
-
-            RunTest(SetTextCellValue);
-            RunTest(GetEmptyValue);
-            RunTest(SetCheckBoxCellValue);
-            RunTest(SetComboBoxCellValue);
-            RunTest(TextOnButtonCell);
-            RunTest(Click);
-        }
-
-        void SetTextCellValue()
-        {
-            TableCell cell = row.Cells[0];
-            Assert.Equal("Imran", cell.Value);
-            cell.Value = "Mudassar";
-            Assert.Equal("Mudassar", cell.Value);
-        }
-
-        void GetEmptyValue()
-        {
-            TableCell cell = table.Rows[3].Cells[0];
-            cell.Value = string.Empty;
-            Assert.Equal(string.Empty, cell.Value);
-        }
-
-        void SetCheckBoxCellValue()
-        {
-            Assert.Equal(true.ToString(), row.Cells[2].Value);
-            row.Cells[2].Value = true;
-            Assert.Equal(true.ToString(), row.Cells[2].Value);
-            row.Cells[2].Value = false;
-            Assert.Equal(false.ToString(), row.Cells[2].Value);
-        }
-
-        void SetComboBoxCellValue()
-        {
-            Assert.Equal("Pakistan", row.Cells[1].Value);
-            row.Cells[1].Value = "India";
-            Assert.Equal("India", row.Cells[1].Value);
-        }
-
-        void TextOnButtonCell()
-        {
-            Assert.Equal("Show", row.Cells[3].Value);
-        }
-
-        void Click()
-        {
-            row.Cells[1].Click();
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Table/TableCellTests.cs b/src/TestStack.White.UITests/ControlTests/Table/TableCellTests.cs
new file mode 100644
index 00000000..69db0518
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/Table/TableCellTests.cs
@@ -0,0 +1,75 @@
+using NUnit.Framework;
+using System;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.TableItems;
+
+namespace TestStack.White.UITests.ControlTests.Table
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    public class TableCellTests : WhiteUITestBase
+    {
+        private UIItems.TableItems.Table table;
+        private TableRow row;
+
+        public TableCellTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectDataGridTab();
+            table = MainWindow.Get<UIItems.TableItems.Table>("DataGrid");
+            var rows = table.Rows;
+            row = rows[0];
+        }
+
+        [Test]
+        public void SetTextCellValueTest()
+        {
+            var cell = row.Cells[0];
+            Assert.That(cell.Value, Is.EqualTo("Imran"));
+            cell.Value = "Mudassar";
+            Assert.That(cell.Value, Is.EqualTo("Mudassar"));
+        }
+
+        [Test]
+        public void GetEmptyValueTest()
+        {
+            var cell = table.Rows[3].Cells[0];
+            cell.Value = String.Empty;
+            Assert.That(cell.Value, Is.Empty);
+        }
+
+        [Test]
+        public void SetCheckBoxCellValueTest()
+        {
+            Assert.That(row.Cells[2].Value, Is.EqualTo(true.ToString()));
+            row.Cells[2].Value = true;
+            Assert.That(row.Cells[2].Value, Is.EqualTo(true.ToString()));
+            row.Cells[2].Value = false;
+            Assert.That(row.Cells[2].Value, Is.EqualTo(false.ToString()));
+        }
+
+        [Test]
+        public void SetComboBoxCellValueTest()
+        {
+            Assert.That(row.Cells[1].Value, Is.EqualTo("Pakistan"));
+            row.Cells[1].Value = "India";
+            Assert.That(row.Cells[1].Value, Is.EqualTo("India"));
+        }
+
+        [Test]
+        public void TextOnButtonCellTest()
+        {
+            Assert.That(row.Cells[3].Value, Is.EqualTo("Show"));
+        }
+
+        [Test]
+        public void ClickTest()
+        {
+            Assert.That(() => { row.Cells[1].Click(); }, Throws.Nothing);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Table/TableRowTest.cs b/src/TestStack.White.UITests/ControlTests/Table/TableRowTest.cs
deleted file mode 100644
index 70f0cd3f..00000000
--- a/src/TestStack.White.UITests/ControlTests/Table/TableRowTest.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.TableItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.DataGrid.WinForms
-{
-    public class TableRowTest : WhiteTestBase
-    {
-        Table table;
-        TableRows rows;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectDataGridTab();
-            table = MainWindow.Get<Table>("DataGrid");
-            rows = table.Rows;
-
-            RunTest(RowData);
-            RunTest(GetRowAfterSortingOnAColumn);
-            RunTest(Select);
-        }
-
-        void RowData()
-        {
-            TableRow firstRow = rows[0];
-            Assert.Equal("Imran", firstRow.Cells[0].Value);
-            Assert.Equal("Pakistan", firstRow.Cells[1].Value);
-            Assert.Equal(true.ToString(), firstRow.Cells[2].Value);
-
-            TableRow thirdRow = rows[2];
-            Assert.Equal("Raman Lamba", thirdRow.Cells[0].Value);
-            Assert.Equal("India", thirdRow.Cells[1].Value);
-            Assert.Equal(false.ToString(), thirdRow.Cells[2].Value);
-        }
-
-        void GetRowAfterSortingOnAColumn()
-        {
-            table.Header.Columns["Name"].Click();
-            table.Refresh();
-            TableRow firstRow = rows[0];
-            Assert.Equal("Imran", firstRow.Cells[0].Value);
-            Assert.Equal("Pakistan", firstRow.Cells[1].Value);
-            Assert.Equal(true.ToString(), firstRow.Cells[2].Value);
-
-            TableRow thirdRow = rows[2];
-            Assert.Equal("Raman Lamba", thirdRow.Cells[0].Value);
-            Assert.Equal("India", thirdRow.Cells[1].Value);
-            Assert.Equal(false.ToString(), thirdRow.Cells[2].Value);
-        }
-
-        void Select()
-        {
-            Assert.True(rows[0].Select());
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Table/TableRowTests.cs b/src/TestStack.White.UITests/ControlTests/Table/TableRowTests.cs
new file mode 100644
index 00000000..d7551dd4
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/Table/TableRowTests.cs
@@ -0,0 +1,62 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.TableItems;
+
+namespace TestStack.White.UITests.ControlTests.Table
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    public class TableRowTests : WhiteUITestBase
+    {
+        private UIItems.TableItems.Table table;
+        private TableRows rows;
+
+        public TableRowTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectDataGridTab();
+            table = MainWindow.Get<UIItems.TableItems.Table>("DataGrid");
+            rows = table.Rows;
+        }
+
+        [Test]
+        public void RowDataTest()
+        {
+            var firstRow = rows[0];
+            Assert.That(firstRow.Cells[0].Value, Is.EqualTo("Imran"));
+            Assert.That(firstRow.Cells[1].Value, Is.EqualTo("Pakistan"));
+            Assert.That(firstRow.Cells[2].Value, Is.EqualTo(true.ToString()));
+
+            var thirdRow = rows[2];
+            Assert.That(thirdRow.Cells[0].Value, Is.EqualTo("Raman Lamba"));
+            Assert.That(thirdRow.Cells[1].Value, Is.EqualTo("India"));
+            Assert.That(thirdRow.Cells[2].Value, Is.EqualTo(false.ToString()));
+        }
+
+        [Test]
+        public void GetRowAfterSortingOnAColumnTest()
+        {
+            table.Header.Columns["Name"].Click();
+            table.Refresh();
+            var firstRow = rows[0];
+            Assert.That(firstRow.Cells[0].Value, Is.EqualTo("Imran"));
+            Assert.That(firstRow.Cells[1].Value, Is.EqualTo("Pakistan"));
+            Assert.That(firstRow.Cells[2].Value, Is.EqualTo(true.ToString()));
+
+            var thirdRow = rows[2];
+            Assert.That(thirdRow.Cells[0].Value, Is.EqualTo("Raman Lamba"));
+            Assert.That(thirdRow.Cells[1].Value, Is.EqualTo("India"));
+            Assert.That(thirdRow.Cells[2].Value, Is.EqualTo(false.ToString()));
+        }
+
+        [Test]
+        public void SelectTest()
+        {
+            Assert.That(rows[0].Select(), Is.True);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Table/TableRowsTest.cs b/src/TestStack.White.UITests/ControlTests/Table/TableRowsTest.cs
deleted file mode 100644
index 2a5a448f..00000000
--- a/src/TestStack.White.UITests/ControlTests/Table/TableRowsTest.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.TableItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.DataGrid.WinForms
-{
-    public class TableRowsTest : WhiteTestBase
-    {
-        Table table;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectDataGridTab();
-            table = MainWindow.Get<Table>("DataGrid");
-
-            RunTest(GetRowTest);
-            RunTest(GetMultipleRowsTest);
-        }
-
-        void GetRowTest()
-        {
-            TableRows rows = table.Rows;
-            Assert.Equal("Imran", rows.Get("Name", "Imran").Cells[0].Value);
-        }
-
-        void GetMultipleRowsTest()
-        {
-            TableRows rows = table.Rows;
-            rows[1].Cells[0].Value = "Imran";
-            Assert.Equal("Imran", rows.GetMultipleRows("Name", "Imran")[0].Cells[0].Value);
-            Assert.Equal("Imran", rows.GetMultipleRows("Name", "Imran")[1].Cells[0].Value);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Table/TableRowsTests.cs b/src/TestStack.White.UITests/ControlTests/Table/TableRowsTests.cs
new file mode 100644
index 00000000..284b9ce3
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/Table/TableRowsTests.cs
@@ -0,0 +1,39 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.ControlTests.Table
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    public class TableRowsTests : WhiteUITestBase
+    {
+        private UIItems.TableItems.Table table;
+
+        public TableRowsTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectDataGridTab();
+            table = MainWindow.Get<UIItems.TableItems.Table>("DataGrid");
+        }
+
+        [Test]
+        public void GetRowTest()
+        {
+            var rows = table.Rows;
+            Assert.That(rows.Get("Name", "Imran").Cells[0].Value, Is.EqualTo("Imran"));
+        }
+
+        [Test]
+        public void GetMultipleRowsTest()
+        {
+            var rows = table.Rows;
+            rows[1].Cells[0].Value = "Imran";
+            Assert.That(rows.GetMultipleRows("Name", "Imran")[0].Cells[0].Value, Is.EqualTo("Imran"));
+            Assert.That(rows.GetMultipleRows("Name", "Imran")[1].Cells[0].Value, Is.EqualTo("Imran"));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Table/TableTest.cs b/src/TestStack.White.UITests/ControlTests/Table/TableTest.cs
deleted file mode 100644
index 2a34d828..00000000
--- a/src/TestStack.White.UITests/ControlTests/Table/TableTest.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.TableItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.DataGrid.WinForms
-{
-    public class TableTest : WhiteTestBase
-    {
-        Table table;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectDataGridTab();
-            table = MainWindow.Get<Table>("DataGrid");
-
-            RunTest(Find);
-            RunTest(TableRows);
-            RunTest(SelectRowNotVisibleInitially);
-            RunTest(TableHasScrollBars);
-            RunTest(Columns);
-            RunTest(GetRow);
-            RunTest(FindAllTest);
-            RunTest(IsInTop);
-        }
-
-        void Find()
-        {
-            table = MainWindow.Get<Table>("DataGrid");
-            Assert.NotEqual(null, table);
-        }
-
-        void TableRows()
-        {
-            table.LogStructure();
-            TableRows tableRows = table.Rows;
-            Assert.True(tableRows.Count >= 13, tableRows.Count.ToString());
-        }
-
-        void SelectRowNotVisibleInitially()
-        {
-            TableRows rows = table.Rows;
-            TableRow row = rows[rows.Count - 1];
-            row.Select();
-            Assert.Equal(false, row.IsOffScreen);
-            row = rows[0];
-            Assert.Equal(true, row.IsOffScreen);
-            row.Select();
-            Assert.Equal(false, row.IsOffScreen);
-        }
-
-        void TableHasScrollBars()
-        {
-            Assert.NotEqual(null, table.ScrollBars);
-        }
-        
-        void Columns()
-        {
-            Assert.Equal(5, table.Header.Columns.Count);
-        }
-
-        void GetRow()
-        {
-            Assert.Equal("Imran", table.Row("Name", "Imran").Cells[0].Value);
-        }
-
-        void FindAllTest()
-        {
-            TableRows rows = table.Rows;
-            rows[1].Cells[0].Value = "Imran";
-            Assert.Equal("Imran", table.FindAll("Name", "Imran")[0].Cells[0].Value);
-            Assert.Equal("Imran", table.FindAll("Name", "Imran")[1].Cells[0].Value);
-        }
-
-        void IsInTop()
-        {
-            Assert.Equal(true, ((TableVerticalScrollOffset)table).IsOnTop);
-            table.Rows[table.Rows.Count - 1].Select();
-            Assert.Equal(false, ((TableVerticalScrollOffset)table).IsOnTop);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/Table/TableTests.cs b/src/TestStack.White.UITests/ControlTests/Table/TableTests.cs
new file mode 100644
index 00000000..b6af29a3
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/Table/TableTests.cs
@@ -0,0 +1,87 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.TableItems;
+
+namespace TestStack.White.UITests.ControlTests.Table
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    public class TableTests : WhiteUITestBase
+    {
+        private UIItems.TableItems.Table table;
+
+        public TableTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectDataGridTab();
+            table = MainWindow.Get<UIItems.TableItems.Table>("DataGrid");
+        }
+
+        [Test]
+        public void FindTest()
+        {
+            table = MainWindow.Get<UIItems.TableItems.Table>("DataGrid");
+            Assert.That(table, Is.Not.Null);
+        }
+
+        [Test]
+        public void TableRowsTest()
+        {
+            table.LogStructure();
+            var tableRows = table.Rows;
+            Assert.That(tableRows, Has.Count.GreaterThanOrEqualTo(13));
+        }
+
+        [Test]
+        public void SelectRowNotVisibleInitiallyTest()
+        {
+            var rows = table.Rows;
+            var row = rows[rows.Count - 1];
+            row.Select();
+            Assert.That(row.IsOffScreen, Is.False);
+            row = rows[0];
+            Assert.That(row.IsOffScreen, Is.True);
+            row.Select();
+            Assert.That(row.IsOffScreen, Is.False);
+        }
+
+        [Test]
+        public void TableHasScrollBarsTest()
+        {
+            Assert.That(table.ScrollBars, Is.Not.Null);
+        }
+
+        [Test]
+        public void ColumnsTest()
+        {
+            Assert.That(table.Header.Columns, Has.Count.EqualTo(5));
+        }
+
+        [Test]
+        public void GetRowTest()
+        {
+            Assert.That(table.Row("Name", "Imran").Cells[0].Value, Is.EqualTo("Imran"));
+        }
+
+        [Test]
+        public void FindAllTest()
+        {
+            var rows = table.Rows;
+            rows[1].Cells[0].Value = "Imran";
+            Assert.That(table.FindAll("Name", "Imran")[0].Cells[0].Value, Is.EqualTo("Imran"));
+            Assert.That(table.FindAll("Name", "Imran")[1].Cells[0].Value, Is.EqualTo("Imran"));
+        }
+
+        [Test]
+        public void IsInTopTest()
+        {
+            Assert.That(((TableVerticalScrollOffset)table).IsOnTop, Is.True);
+            table.Rows[table.Rows.Count - 1].Select();
+            Assert.That(((TableVerticalScrollOffset)table).IsOnTop, Is.False);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/TooltipTests.cs b/src/TestStack.White.UITests/ControlTests/TooltipTests.cs
index 22fd9ae4..ae2e5683 100644
--- a/src/TestStack.White.UITests/ControlTests/TooltipTests.cs
+++ b/src/TestStack.White.UITests/ControlTests/TooltipTests.cs
@@ -1,26 +1,22 @@
-﻿using System.Collections.Generic;
+﻿using NUnit.Framework;
 using TestStack.White.UIItems;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests
 {
-    public class TooltipTests : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class TooltipTests : WhiteUITestBase
     {
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public TooltipTests(WindowsFramework framework)
+            : base(framework)
         {
-            RunTest(CanGetTooltip);
         }
 
-        private void CanGetTooltip()
+        [Test]
+        public void CanGetTooltip()
         {
             var button = MainWindow.Get<Button>("ButtonWithTooltip");
-            Assert.Equal("I have a tooltip", MainWindow.GetToolTipOn(button).Text);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
+            Assert.That(MainWindow.GetToolTipOn(button).Text, Is.EqualTo("I have a tooltip"));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/TreeItems/TreeNodeTest.cs b/src/TestStack.White.UITests/ControlTests/TreeItems/TreeNodeTest.cs
deleted file mode 100644
index d9217a24..00000000
--- a/src/TestStack.White.UITests/ControlTests/TreeItems/TreeNodeTest.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-using System.Collections.Generic;
-using System.Windows.Automation;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.TreeItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.TreeItems
-{
-    public class TreeNodeTest : WhiteTestBase
-    {
-        Tree tree;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectOtherControls();
-            tree = MainWindow.Get<Tree>("TreeView");
-
-            RunTest(NodeIsExpanded);
-            RunTest(Expand);
-            RunTest(Collapse);
-            RunTest(Collapse);
-            RunTest(DisplayState);
-            RunTest(DoubleClick);
-            RunTest(UnSelect, WindowsFramework.Wpf); // Winforms must have a selection
-        }
-
-        void NodeIsExpanded()
-        {
-            TreeNode treeNode = tree.Node("Root");
-            Assert.False(treeNode.IsExpanded());
-        }
-
-        void Expand()
-        {
-            TreeNode treeNode = tree.Node("Root");
-            treeNode.Expand();
-            Assert.True(treeNode.IsExpanded());
-        }
-
-        void Collapse()
-        {
-            var treeNode = tree.Node("Root");
-            treeNode.Expand();
-            treeNode.Collapse();
-            Assert.False(treeNode.IsExpanded());
-        }
-
-        void DisplayState()
-        {
-            var treeNode = tree.Node("Root");
-            treeNode.Expand();
-            Assert.Equal(ExpandCollapseState.Expanded, treeNode.DisplayState);
-            treeNode.Collapse();
-            Assert.Equal(ExpandCollapseState.Collapsed, treeNode.DisplayState);
-        }
-
-        void DoubleClick()
-        {
-            var treeNode = tree.Node("Root");
-            var state = treeNode.IsExpanded();
-            treeNode.DoubleClick();
-            Assert.NotEqual(state, treeNode.IsExpanded());
-            treeNode.DoubleClick();
-            Assert.Equal(state, treeNode.IsExpanded());
-        }
-
-        void UnSelect()
-        {
-            var treeNode = tree.Node("Root", "Child");
-            treeNode.Select();
-            Assert.Equal("Child", tree.SelectedNode.Name);
-            treeNode.UnSelect();
-            Assert.Null(tree.SelectedNode);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/TreeItems/TreeNodeTests.cs b/src/TestStack.White.UITests/ControlTests/TreeItems/TreeNodeTests.cs
new file mode 100644
index 00000000..eddf1d0e
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/TreeItems/TreeNodeTests.cs
@@ -0,0 +1,78 @@
+using NUnit.Framework;
+using System.Windows.Automation;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.TreeItems;
+
+namespace TestStack.White.UITests.ControlTests.TreeItems
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class TreeNodeTests : WhiteUITestBase
+    {
+        private Tree tree;
+
+        public TreeNodeTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectOtherControls();
+            tree = MainWindow.Get<Tree>("TreeView");
+        }
+
+        [Test]
+        public void ExpandTest()
+        {
+            var treeNode = tree.Node("Root");
+            treeNode.Expand();
+            Assert.That(treeNode.IsExpanded(), Is.True);
+        }
+
+        [Test]
+        public void CollapseTest()
+        {
+            var treeNode = tree.Node("Root");
+            treeNode.Expand();
+            treeNode.Collapse();
+            Assert.That(treeNode.IsExpanded(), Is.False);
+        }
+
+        [Test]
+        public void DisplayStateTest()
+        {
+            var treeNode = tree.Node("Root");
+            treeNode.Expand();
+            Assert.That(treeNode.DisplayState, Is.EqualTo(ExpandCollapseState.Expanded));
+            treeNode.Collapse();
+            Assert.That(treeNode.DisplayState, Is.EqualTo(ExpandCollapseState.Collapsed));
+        }
+
+        [Test]
+        public void DoubleClickTest()
+        {
+            var treeNode = tree.Node("Root");
+            var state = treeNode.IsExpanded();
+            treeNode.DoubleClick();
+            Assert.That(treeNode.IsExpanded(), Is.Not.EqualTo(state));
+            treeNode.DoubleClick();
+            Assert.That(treeNode.IsExpanded(), Is.EqualTo(state));
+        }
+
+        [Test]
+        public void UnSelectTest()
+        {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
+            var treeNode = tree.Node("Root", "Child");
+            treeNode.Select();
+            Assert.That(tree.SelectedNode.Name, Is.EqualTo("Child"));
+            treeNode.UnSelect();
+            Assert.That(tree.SelectedNode, Is.Null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/TreeItems/TreeTest.cs b/src/TestStack.White.UITests/ControlTests/TreeItems/TreeTest.cs
deleted file mode 100644
index 17b740e9..00000000
--- a/src/TestStack.White.UITests/ControlTests/TreeItems/TreeTest.cs
+++ /dev/null
@@ -1,109 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.TreeItems;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.TreeItems
-{
-    public class TreeTest : WhiteTestBase
-    {
-        Tree tree;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectOtherControls();
-            tree = MainWindow.Get<Tree>("TreeView");
-
-            RunTest(Nodes);
-            RunTest(() => FindNode(framework));
-            RunTest(SelectNodeWhichNeedsScrolling);
-            RunTest(SelectNode);
-            RunTest(DynamicallyAddedNodeCanBeFound);
-            RunTest(GetPathTo);
-            RunTest(GetClickedNodePathForGrandChild);
-            RunTest(GetClickedNodePathForRoot);
-            RunTest(ScrollAndSelect);
-        }
-
-        void Nodes()
-        {
-            Assert.True(tree.Nodes.Count >= 2);
-        }
-
-        void FindNode(WindowsFramework framework)
-        {
-            Assert.True(tree.HasNode("Root"));
-            Assert.False(tree.HasNode("Roo"));
-            Assert.True(tree.HasNode("Main"));
-            Assert.True(tree.HasNode("Root", "Child"));
-            Assert.True(tree.HasNode("Root", "Child", "Grand Child"));
-            var exception = Assert.Throws<AutomationException>(() => tree.HasNode("Root", "Child", "Grand Child", "Grand Child"));
-            string expected = string.Format(
-                "Cannot expand TreeNode {0}TreeNode. AutomationId:, Name:Grand Child, " +
-                "ControlType:tree view item, FrameworkId:{1}, expand button not visible",
-                framework == WindowsFramework.Wpf ? "WPF" : "Win32",
-                framework.FrameworkId());
-            Assert.Equal(expected, exception.Message);
-        }
-
-        void SelectNodeWhichNeedsScrolling()
-        {
-            tree.Node("Root").Select();
-            Assert.Equal("Root", tree.SelectedNode.Text);
-            tree.Node("Main").Select();
-            Assert.Equal("Main", tree.SelectedNode.Text);
-            tree.Node("Root").Select();
-            Assert.Equal("Root", tree.SelectedNode.Text);
-            tree.Node("Main").Select();
-            Assert.Equal("Main", tree.SelectedNode.Text);
-        }
-
-        void SelectNode()
-        {
-            TreeNode treeNode = tree.Node("Root", "Child");
-            treeNode.Select();
-            Assert.Equal("Child", tree.SelectedNode.Name);
-        }
-
-        void DynamicallyAddedNodeCanBeFound()
-        {
-            MainWindow.Get<Button>("AddNode").Click();
-            Assert.True(tree.HasNode("AddedNode"));
-        }
-
-        void GetPathTo()
-        {
-            TreeNode treeNode = tree.Node("Root", "Child");
-            List<TreeNode> path = tree.GetPathTo(treeNode);
-            Assert.Equal(2, path.Count);
-        }
-
-        void GetClickedNodePathForGrandChild()
-        {
-            TreeNode treeNode = tree.Node("Root", "Child", "Grand Child");
-            List<TreeNode> path = tree.GetPathTo(treeNode);
-            Assert.Equal(3, path.Count);
-        }
-
-        void GetClickedNodePathForRoot()
-        {
-            TreeNode treeNode = tree.Node("Root");
-            List<TreeNode> path = tree.GetPathTo(treeNode);
-            Assert.Equal(1, path.Count);
-        }
-
-        void ScrollAndSelect()
-        {
-            TreeNode treeNode = tree.Node("Lots Of Children", "Child40");
-            Assert.NotNull(treeNode);
-            treeNode.Select();
-            Assert.Equal(treeNode, tree.SelectedNode);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/TreeItems/TreeTests.cs b/src/TestStack.White.UITests/ControlTests/TreeItems/TreeTests.cs
new file mode 100644
index 00000000..8b0a0667
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/TreeItems/TreeTests.cs
@@ -0,0 +1,112 @@
+using System;
+using System.Windows.Automation;
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.TreeItems;
+
+namespace TestStack.White.UITests.ControlTests.TreeItems
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class TreeTests : WhiteUITestBase
+    {
+        private Tree tree;
+
+        public TreeTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectOtherControls();
+            tree = MainWindow.Get<Tree>("TreeView");
+        }
+
+        [Test]
+        public void NodesTest()
+        {
+            Assert.That(tree.Nodes, Has.Count.GreaterThanOrEqualTo(2));
+        }
+
+        [Test]
+        public void FindNodeTest()
+        {
+            Assert.That(tree.HasNode("Root"), Is.True);
+            Assert.That(tree.HasNode("Roo"), Is.False);
+            Assert.That(tree.HasNode("Main"), Is.True);
+            Assert.That(tree.HasNode("Root", "Child"), Is.True);
+            Assert.That(tree.HasNode("Root", "Child", "Grand Child"), Is.True);
+            Assert.That(() => { tree.HasNode("Root", "Child", "Grand Child", "Grand Child"); },
+                    Throws.TypeOf<AutomationException>().With.
+                    Message.EqualTo(String.Format(
+                        "Cannot expand TreeNode {0}TreeNode. AutomationId:, Name:Grand Child, " +
+                        "ControlType:{2}, FrameworkId:{1}, expand button not visible",
+                        Framework == WindowsFramework.Wpf ? "WPF" : "Win32",
+                        Framework.FrameworkId(),
+                        ControlType.TreeItem.LocalizedControlType)));
+        }
+
+        [Test]
+        public void SelectNodeWhichNeedsScrollingTest()
+        {
+            tree.Node("Root").Select();
+            Assert.That(tree.SelectedNode.Text, Is.EqualTo("Root"));
+            tree.Node("Main").Select();
+            Assert.That(tree.SelectedNode.Text, Is.EqualTo("Main"));
+            tree.Node("Root").Select();
+            Assert.That(tree.SelectedNode.Text, Is.EqualTo("Root"));
+            tree.Node("Main").Select();
+            Assert.That(tree.SelectedNode.Text, Is.EqualTo("Main"));
+        }
+
+        [Test]
+        public void SelectNodeTest()
+        {
+            var treeNode = tree.Node("Root", "Child");
+            treeNode.Select();
+            Assert.That(tree.SelectedNode.Name, Is.EqualTo("Child"));
+        }
+
+        [Test]
+        public void DynamicallyAddedNodeCanBeFoundTest()
+        {
+            MainWindow.Get<Button>("AddNode").Click();
+            Assert.That(tree.HasNode("AddedNode"), Is.True);
+        }
+
+        [Test]
+        public void GetPathToTest()
+        {
+            var treeNode = tree.Node("Root", "Child");
+            var path = tree.GetPathTo(treeNode);
+            Assert.That(path, Has.Count.EqualTo(2));
+        }
+
+        [Test]
+        public void GetClickedNodePathForGrandChildTest()
+        {
+            var treeNode = tree.Node("Root", "Child", "Grand Child");
+            var path = tree.GetPathTo(treeNode);
+            Assert.That(path, Has.Count.EqualTo(3));
+        }
+
+        [Test]
+        public void GetClickedNodePathForRootTest()
+        {
+            var treeNode = tree.Node("Root");
+            var path = tree.GetPathTo(treeNode);
+            Assert.That(path, Has.Count.EqualTo(1));
+        }
+
+        [Test]
+        public void ScrollAndSelectTest()
+        {
+            var treeNode = tree.Node("Lots Of Children", "Child40");
+            Assert.That(treeNode, Is.Not.Null);
+            treeNode.Select();
+            Assert.That(tree.SelectedNode, Is.EqualTo(treeNode));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/UIItemTests.cs b/src/TestStack.White.UITests/ControlTests/UIItemTests.cs
index fbd74bef..e321776d 100644
--- a/src/TestStack.White.UITests/ControlTests/UIItemTests.cs
+++ b/src/TestStack.White.UITests/ControlTests/UIItemTests.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using NUnit.Framework;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.Finders;
 using TestStack.White.UIItems.ListBoxItems;
@@ -7,25 +7,21 @@
 
 namespace TestStack.White.UITests.ControlTests
 {
-    public class UIItemTests : WhiteTestBase
+    [TestFixture(WindowsFramework.Wpf)]
+    public class UIItemTests : WhiteUITestBase
     {
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public UIItemTests(WindowsFramework framework)
+            : base(framework)
         {
-            RunTest(can_click_on_elements_located_by_searching_through_several_containers);
         }
 
-        void can_click_on_elements_located_by_searching_through_several_containers()
+        [Test]
+        public void ClickOnElementLocatedBySearchingThroughSeveralContainersTest()
         {
             var groupBox = MainWindow.Get<TabPage>(SearchCriteria.ByAutomationId("ListControlsTab"));
             var listbox = groupBox.Get<ListBox>(SearchCriteria.ByAutomationId("CheckedListBox"));
             var listboxItem = listbox.Get<ListItem>(SearchCriteria.ByText("Item1"));
-            
-            listboxItem.Click();
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
+            Assert.That(() => { listboxItem.Click(); }, Throws.Nothing);
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/VScrollBarTest.cs b/src/TestStack.White.UITests/ControlTests/VScrollBarTests.cs
similarity index 56%
rename from src/TestStack.White.UITests/ControlTests/VScrollBarTest.cs
rename to src/TestStack.White.UITests/ControlTests/VScrollBarTests.cs
index f8cfd3be..3320d469 100644
--- a/src/TestStack.White.UITests/ControlTests/VScrollBarTest.cs
+++ b/src/TestStack.White.UITests/ControlTests/VScrollBarTests.cs
@@ -1,19 +1,26 @@
-using System.Collections.Generic;
+using NUnit.Framework;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.ListBoxItems;
 using TestStack.White.UIItems.Scrolling;
-using Xunit;
 
 namespace TestStack.White.UITests.ControlTests
 {
-    public class VScrollBarTest : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class VScrollBarTests : WhiteUITestBase
     {
         private ListBox listBox;
         private IVScrollBar vScrollBar;
         private double smallChange;
         private double largeChange;
 
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public VScrollBarTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
         {
             listBox = MainWindow.Get<ListBox>("ListBoxWithVScrollBar");
             vScrollBar = listBox.ScrollBars.Vertical;
@@ -24,65 +31,60 @@ protected override void ExecuteTestRun(WindowsFramework framework)
             largeChange = vScrollBar.Value;
             vScrollBar.ScrollUpLarge();
             if (vScrollBar.IsNotMinimum)
+            {
                 vScrollBar.SetToMinimum();
-
-            RunTest(ShouldGetVerticalScrollBar);
-            RunTest(ShouldScrollDown);
-            RunTest(ShouldScrollDownLarge);
-            RunTest(ShouldScrollUp);
-            RunTest(ShouldScrollUpLarge);
+            }
         }
 
-        void ShouldGetVerticalScrollBar()
+        [Test]
+        public void ShouldGetVerticalScrollBarTest()
         {
-            Assert.NotNull(vScrollBar);
+            Assert.That(vScrollBar, Is.Not.Null);
         }
 
-        void ShouldScrollDown()
+        [Test]
+        public void ShouldScrollDownTest()
         {
-            double currentValue = vScrollBar.Value;
+            var currentValue = vScrollBar.Value;
             vScrollBar.ScrollDown();
             vScrollBar.ScrollDown();
             vScrollBar.ScrollDown();
             vScrollBar.ScrollDown();
             vScrollBar.ScrollDown();
-            Assert.Equal(currentValue + (smallChange*5), vScrollBar.Value, 3);
+            Assert.That(vScrollBar.Value, Is.EqualTo(currentValue + (smallChange * 5)).Within(3));
         }
 
-        void ShouldScrollDownLarge()
+        [Test]
+        public void ShouldScrollDownLarge()
         {
-            double currentValue = vScrollBar.Value;
+            var currentValue = vScrollBar.Value;
             vScrollBar.ScrollDownLarge();
             vScrollBar.ScrollDownLarge();
             vScrollBar.ScrollDownLarge();
-            Assert.Equal(currentValue + (largeChange*3), vScrollBar.Value, 3);
+            Assert.That(vScrollBar.Value, Is.EqualTo(currentValue + (largeChange * 3)).Within(3));
         }
 
-        void ShouldScrollUp()
+        [Test]
+        public void ShouldScrollUp()
         {
             vScrollBar.SetToMaximum();
-            double maxValue = vScrollBar.Value;
+            var maxValue = vScrollBar.Value;
             vScrollBar.ScrollUp();
             vScrollBar.ScrollUp();
             vScrollBar.ScrollUp();
             vScrollBar.ScrollUp();
             vScrollBar.ScrollUp();
-            Assert.Equal(maxValue - (smallChange * 5), vScrollBar.Value, 3);
+            Assert.That(vScrollBar.Value, Is.EqualTo(maxValue - (smallChange * 5)).Within(3));
         }
 
-        void ShouldScrollUpLarge()
+        [Test]
+        public void ShouldScrollUpLarge()
         {
             var currentValue = vScrollBar.Value;
             vScrollBar.ScrollUpLarge();
             vScrollBar.ScrollUpLarge();
             vScrollBar.ScrollUpLarge();
-            Assert.Equal(currentValue - (largeChange * 3), vScrollBar.Value, 3);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
+            Assert.That(vScrollBar.Value, Is.EqualTo(currentValue - (largeChange * 3)).Within(3));
         }
     }
 }
diff --git a/src/TestStack.White.UITests/ControlTests/WPF/DataGridTests.cs b/src/TestStack.White.UITests/ControlTests/WPF/DataGridTests.cs
deleted file mode 100644
index b71571aa..00000000
--- a/src/TestStack.White.UITests/ControlTests/WPF/DataGridTests.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-﻿using System.Collections.Generic;
-using NUnit.Framework;
-using TestStack.White.UITests.Infrastructure;
-using White.Core.UIItems;
-using White.Core.UIItems.Finders;
-using White.Core.UIItems.WPFUIItems;
-
-namespace TestStack.White.UITests.ControlTests.WPF
-{
-    public class DataGridTests : WhiteTestBase
-    {
-        protected ListView DataGridUnderTest { get; set; }
-        protected ListView DataGridFromCustomControlUnderTest { get; set; }
-
-        protected override void RunTest(WindowsFramework framework)
-        {
-            DataGridUnderTest = MainWindow.Get<ListView>(SearchCriteria.ByAutomationId("DataGridControl"));
-            var customControl = MainWindow.Get(SearchCriteria.ByAutomationId("CustomDataGridControl")) as UIItem;
-            DataGridFromCustomControlUnderTest = customControl.Get<ListView>(SearchCriteria.ByAutomationId("DataGridControl"));
-
-            RunTest(() => CanGetAllItems(DataGridUnderTest));
-            RunTest(() => CanGetAllItems(DataGridFromCustomControlUnderTest));
-            RunTest(() => CanGetCell(DataGridUnderTest));
-            RunTest(() => CanGetCell(DataGridFromCustomControlUnderTest));
-        }
-
-        void CanGetAllItems(ListView dataGridUnderTest)
-        {
-            var rows = dataGridUnderTest.Rows;
-            Assert.AreEqual(3, rows.Count);
-            var row1 = rows.Get(0);
-            Assert.AreEqual(3, row1.Cells.Count);
-            Assert.AreEqual("1", row1.Cells[0].Text);
-            Assert.AreEqual("Item1", row1.Cells[1].Text);
-            StringAssert.Contains("Simple", row1.Cells[2].Text);
-        }
-
-        void CanGetCell(ListView dataGridUnderTest)
-        {
-            var cell = dataGridUnderTest.Cell("Contents", 0);
-            Assert.AreEqual("Item1", cell.Text);
-            Assert.AreEqual("Item2", dataGridUnderTest.Cell("Contents", 1).Text);
-            Assert.AreEqual("Item3", dataGridUnderTest.Cell("Contents", 2).Text);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-        }
-    }
-}
diff --git a/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusBarTest.cs b/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusBarTest.cs
deleted file mode 100644
index 573fcf01..00000000
--- a/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusBarTest.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.WindowStripControls;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.WindowStripControls
-{
-    public class StatusBarTest : WhiteTestBase
-    {
-        WPFStatusBar statusBar;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            statusBar = MainWindow.Get<WPFStatusBar>("StatusBar");
-            RunTest(StatusBar);
-            RunTest(StatusBarItem);
-        }
-
-        void StatusBar()
-        {
-            Assert.NotEqual(null, statusBar);
-        }
-
-        void StatusBarItem()
-        {
-            UIItemCollection collection = statusBar.Items;
-            Assert.Equal(2, collection.Count);
-            var label = (Label) collection[0];
-            Assert.Equal("Status Item 1", label.Text);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusBarTests.cs b/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusBarTests.cs
new file mode 100644
index 00000000..a909e48a
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusBarTests.cs
@@ -0,0 +1,38 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.WindowStripControls;
+
+namespace TestStack.White.UITests.ControlTests.WindowStripControls
+{
+    [TestFixture(WindowsFramework.Wpf)]
+    public class StatusBarTests : WhiteUITestBase
+    {
+        private WPFStatusBar statusBar;
+
+        public StatusBarTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            statusBar = MainWindow.Get<WPFStatusBar>("StatusBar");
+        }
+
+        [Test]
+        public void StatusBarTest()
+        {
+            Assert.That(statusBar, Is.Not.Null);
+        }
+
+        [Test]
+        public void StatusBarItemTest()
+        {
+            var collection = statusBar.Items;
+            Assert.That(collection, Has.Count.EqualTo(2));
+            var label = (Label)collection[0];
+            Assert.That(label.Text, Is.EqualTo("Status Item 1"));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusStripTest.cs b/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusStripTest.cs
deleted file mode 100644
index 473545e8..00000000
--- a/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusStripTest.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.Configuration;
-using TestStack.White.Factory;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.WindowStripControls;
-using Xunit;
-
-namespace TestStack.White.UITests.ControlTests.WindowStripControls
-{
-    public class StatusStripTest : WhiteTestBase
-    {
-        StatusStrip statusStrip;
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectOtherControls();
-            statusStrip = MainWindow.StatusBar(InitializeOption.NoCache);
-
-            RunTest(Find);
-            RunTest(ThrowsWhenDoesNotExists);
-            RunTest(FindLabelInsideStatusBar);
-            RunTest(ClickOnButtonAndFindPopupMenu);
-            RunTest(FindDropDown);
-            RunTest(ProgressBar);
-            RunTest(ProgressBar2);
-        }
-
-        void Find()
-        {
-            Assert.NotNull(statusStrip);
-        }
-
-        void ThrowsWhenDoesNotExists()
-        {
-            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.BusyTimeout = 100))
-            {
-                var exception = Assert.Throws<AutomationException>(() => MainWindow.Get<StatusStrip>("foo"));
-
-                Assert.Equal("Failed to get ControlType=status bar,AutomationId=foo", exception.Message);
-            }
-        }
-
-        void FindLabelInsideStatusBar()
-        {
-            UIItem uiItem = statusStrip.GetLabel("Status Strip Label");
-            Assert.NotNull(uiItem);
-        }
-
-        void ClickOnButtonAndFindPopupMenu()
-        {
-            StatusStripSplitButton statusStripSplitButton = statusStrip.GetSplitButton("toolStripSplitButtonText");
-            Assert.NotNull(statusStripSplitButton);
-            statusStripSplitButton.Click();
-        }
-
-        void FindDropDown()
-        {
-            StatusStripDropDownButton button = statusStrip.GetDropDownButton("toolStripDropDownButton");
-            Assert.NotNull(button);
-            button.Click();
-        }
-
-        void ProgressBar()
-        {
-            ProgressBar progressBar = statusStrip.GetProgressBar();
-            Assert.Equal(0, progressBar.Minimum);
-            Assert.Equal(33, progressBar.Value);
-            Assert.Equal(100, progressBar.Maximum);
-        }
-
-        void ProgressBar2()
-        {
-            ProgressBar progressBar = statusStrip.GetProgressBar(1);
-            Assert.Equal(0, progressBar.Minimum);
-            Assert.Equal(67, progressBar.Value);
-            Assert.Equal(100, progressBar.Maximum);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusStripTests.cs b/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusStripTests.cs
new file mode 100644
index 00000000..cb130530
--- /dev/null
+++ b/src/TestStack.White.UITests/ControlTests/WindowStripControls/StatusStripTests.cs
@@ -0,0 +1,88 @@
+using NUnit.Framework;
+using System;
+using System.Windows.Automation;
+using TestStack.White.Configuration;
+using TestStack.White.Factory;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.WindowStripControls;
+
+namespace TestStack.White.UITests.ControlTests.WindowStripControls
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    public class StatusStripTests : WhiteUITestBase
+    {
+        private StatusStrip statusStrip;
+
+        public StatusStripTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectOtherControls();
+            statusStrip = MainWindow.StatusBar(InitializeOption.NoCache);
+        }
+
+        [Test]
+        public void FindTest()
+        {
+            Assert.That(statusStrip, Is.Not.Null);
+        }
+
+        [Test]
+        public void ThrowsWhenDoesNotExistsTest()
+        {
+            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.BusyTimeout = 100))
+            {
+                Assert.That(() => { MainWindow.Get<StatusStrip>("foo"); },
+                    Throws.TypeOf<AutomationException>().With.
+                    Message.EqualTo(String.Format("Failed to get ControlType={0},AutomationId=foo",
+                        ControlType.StatusBar.LocalizedControlType)));
+            }
+        }
+
+        [Test]
+        public void FindLabelInsideStatusBarTest()
+        {
+            var uiItem = statusStrip.GetLabel("Status Strip Label");
+            Assert.That(uiItem, Is.Not.Null);
+        }
+
+        [Test]
+        public void ClickOnButtonAndFindPopupMenuTest()
+        {
+            var statusStripSplitButton = statusStrip.GetSplitButton("toolStripSplitButtonText");
+            Assert.That(statusStripSplitButton, Is.Not.Null);
+            statusStripSplitButton.Click();
+        }
+
+        [Test]
+        public void FindDropDownTest()
+        {
+            var button = statusStrip.GetDropDownButton("toolStripDropDownButton");
+            Assert.That(button, Is.Not.Null);
+            button.Click();
+        }
+
+        [Test]
+        public void ProgressBarTest()
+        {
+            var progressBar = statusStrip.GetProgressBar();
+            Assert.That(progressBar.Minimum, Is.EqualTo(0));
+            Assert.That(progressBar.Value, Is.EqualTo(33));
+            Assert.That(progressBar.Maximum, Is.EqualTo(100));
+        }
+
+        [Test]
+        [Ignore("For some reason, UIA returns each element twice so the index 1 is the same item as with index 0")]
+        public void ProgressBar2Test()
+        {
+            var progressBar = statusStrip.GetProgressBar(1);
+            Assert.That(progressBar.Minimum, Is.EqualTo(0));
+            Assert.That(progressBar.Value, Is.EqualTo(67));
+            Assert.That(progressBar.Maximum, Is.EqualTo(100));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Factory/InitializeOptionTest.cs b/src/TestStack.White.UITests/Factory/InitializeOptionTest.cs
deleted file mode 100644
index 641d0295..00000000
--- a/src/TestStack.White.UITests/Factory/InitializeOptionTest.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System.Collections.Generic;
-using System.IO;
-using TestStack.White.Factory;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.WindowItems;
-using Xunit;
-
-namespace TestStack.White.UITests.Factory
-{
-    public class InitializeOptionTest : WhiteTestBase
-    {
-        public InitializeOptionTest()
-        {
-            if (File.Exists("foo.xml"))
-                File.Delete("foo.xml");
-        }
-
-        public void IdentifiedByCreatesAFile()
-        {
-            File.Delete("foo.xml");
-            Window window = Application.GetWindow("MainWindow", InitializeOption.NoCache.AndIdentifiedBy("Foo"));
-            window.Get<Button>("ButtonWithTooltip").Click();
-            Application.ApplicationSession.Save();
-            Assert.Equal(true, File.Exists("foo.xml"));
-        }
-
-        public void Dispose()
-        {
-            File.Delete("foo.xml");
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(IdentifiedByCreatesAFile);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Factory/InitializeOptionTests.cs b/src/TestStack.White.UITests/Factory/InitializeOptionTests.cs
new file mode 100644
index 00000000..86c11c9a
--- /dev/null
+++ b/src/TestStack.White.UITests/Factory/InitializeOptionTests.cs
@@ -0,0 +1,42 @@
+using NUnit.Framework;
+using System.IO;
+using TestStack.White.Factory;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.Factory
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class InitializeOptionTests : WhiteUITestBase
+    {
+        public InitializeOptionTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            if (File.Exists("foo.xml"))
+            {
+                File.Delete("foo.xml");
+            }
+        }
+
+        [OneTimeTearDown]
+        public void Teardown()
+        {
+            File.Delete("foo.xml");
+        }
+
+        [Test]
+        public void IdentifiedByCreatesAFileTest()
+        {
+            File.Delete("foo.xml");
+            var window = Application.GetWindow("MainWindow", InitializeOption.NoCache.AndIdentifiedBy("Foo"));
+            window.Get<Button>("ButtonWithTooltip").Click();
+            Application.ApplicationSession.Save();
+            Assert.That(File.Exists("foo.xml"), Is.True);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/GenericScreenTypeTest.cs b/src/TestStack.White.UITests/GenericScreenTypeTests.cs
similarity index 54%
rename from src/TestStack.White.UITests/GenericScreenTypeTest.cs
rename to src/TestStack.White.UITests/GenericScreenTypeTests.cs
index ac290049..8c9daaf9 100644
--- a/src/TestStack.White.UITests/GenericScreenTypeTest.cs
+++ b/src/TestStack.White.UITests/GenericScreenTypeTests.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using NUnit.Framework;
 using TestStack.White.Factory;
 using TestStack.White.ScreenObjects;
 using TestStack.White.UIItems;
@@ -7,19 +7,24 @@
 
 namespace TestStack.White.UITests
 {
-    public class GenericScreenTypeTest : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class GenericScreenTypeTests : WhiteUITestBase
     {
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public GenericScreenTypeTests(WindowsFramework framework)
+            : base(framework)
         {
-            var screen = Repository.Get<SomeGenericScreen<int, int>>(MainWindow.Title, InitializeOption.NoCache);
-            screen.MakeWindowItemsMapDirty();
-            Application.ApplicationSession.Save();
         }
 
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
+        [Test]
+        public void ExecuteTest()
         {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
+            Assert.That(() =>
+            {
+                var screen = Repository.Get<SomeGenericScreen<int, int>>(MainWindow.Title, InitializeOption.NoCache);
+                screen.MakeWindowItemsMapDirty();
+                Application.ApplicationSession.Save();
+            }, Throws.Nothing);
         }
 
         private class SomeGenericScreen<T1, T2> : AppScreen
diff --git a/src/TestStack.White.UITests/Infrastructure/WindowsConfiguration.cs b/src/TestStack.White.UITests/Infrastructure/WindowsConfiguration.cs
index 89dea91a..15ce0898 100644
--- a/src/TestStack.White.UITests/Infrastructure/WindowsConfiguration.cs
+++ b/src/TestStack.White.UITests/Infrastructure/WindowsConfiguration.cs
@@ -1,6 +1,8 @@
-﻿using System.Diagnostics;
+﻿using System;
+using System.Diagnostics;
 using System.IO;
 using System.Reflection;
+using System.Runtime.InteropServices;
 using TestStack.White.Factory;
 using TestStack.White.ScreenObjects;
 using TestStack.White.UIItems;
@@ -21,7 +23,7 @@ protected WindowsConfiguration(WindowsFramework framework)
 
         public override Application LaunchApplication()
         {
-            var app = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), ApplicationExePath());
+            var app = Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath), ApplicationExePath);
             var processStartInfo = new ProcessStartInfo
             {
                 FileName = app,
@@ -48,6 +50,6 @@ SearchCriteria Criteria()
             return SearchCriteria.ByFramework(framework.FrameworkId()).AndByText("MainWindow");
         }
 
-        protected abstract string ApplicationExePath();
+        protected abstract string ApplicationExePath { get; }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Infrastructure/WinformsTestConfiguration.cs b/src/TestStack.White.UITests/Infrastructure/WinformsTestConfiguration.cs
index 6eeba9ec..f4f8a89a 100644
--- a/src/TestStack.White.UITests/Infrastructure/WinformsTestConfiguration.cs
+++ b/src/TestStack.White.UITests/Infrastructure/WinformsTestConfiguration.cs
@@ -9,9 +9,9 @@ public WinformsTestConfiguration()
         {
         }
 
-        protected override string ApplicationExePath()
+        protected override string ApplicationExePath
         {
-            return "WindowsFormsTestApplication.exe";
+            get { return "WindowsFormsTestApplication.exe"; }
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Infrastructure/WpfTestConfiguration.cs b/src/TestStack.White.UITests/Infrastructure/WpfTestConfiguration.cs
index b1707d5d..efe34352 100644
--- a/src/TestStack.White.UITests/Infrastructure/WpfTestConfiguration.cs
+++ b/src/TestStack.White.UITests/Infrastructure/WpfTestConfiguration.cs
@@ -9,9 +9,9 @@ public WpfTestConfiguration()
         {
         }
 
-        protected override string ApplicationExePath()
+        protected override string ApplicationExePath
         {
-            return "WpfTestApplication.exe";
+            get { return "WpfTestApplication.exe"; }
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/InputDevices/AttachedKeyboardTest.cs b/src/TestStack.White.UITests/InputDevices/AttachedKeyboardTest.cs
deleted file mode 100644
index e184b9fd..00000000
--- a/src/TestStack.White.UITests/InputDevices/AttachedKeyboardTest.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.InputDevices;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.InputDevices
-{
-    public class AttachedKeyboardTest : WhiteTestBase
-    {
-        public void Enter()
-        {
-            SelectInputControls();
-            var textBox = MainWindow.Get<TextBox>("TextBox");
-            textBox.Focus();
-            AttachedKeyboard attachedKeyboard = MainWindow.Keyboard;
-            attachedKeyboard.Enter("a");
-            Assert.Equal("a", textBox.Text);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(Enter);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/InputDevices/AttachedKeyboardTests.cs b/src/TestStack.White.UITests/InputDevices/AttachedKeyboardTests.cs
new file mode 100644
index 00000000..507f2971
--- /dev/null
+++ b/src/TestStack.White.UITests/InputDevices/AttachedKeyboardTests.cs
@@ -0,0 +1,26 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.InputDevices
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class AttachedKeyboardTests : WhiteUITestBase
+    {
+        public AttachedKeyboardTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void EnterTest()
+        {
+            SelectInputControls();
+            var textBox = MainWindow.Get<TextBox>("TextBox");
+            textBox.Focus();
+            var attachedKeyboard = MainWindow.Keyboard;
+            attachedKeyboard.Enter("a");
+            Assert.That(textBox.Text, Is.EqualTo("a"));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/InputDevices/DragAndDropTests.cs b/src/TestStack.White.UITests/InputDevices/DragAndDropTests.cs
index 0726d24b..8f9a2e88 100644
--- a/src/TestStack.White.UITests/InputDevices/DragAndDropTests.cs
+++ b/src/TestStack.White.UITests/InputDevices/DragAndDropTests.cs
@@ -1,37 +1,37 @@
+using NUnit.Framework;
 using System;
-using System.Collections.Generic;
-using Castle.Core.Logging;
 using TestStack.White.InputDevices;
 using TestStack.White.UIA;
 using TestStack.White.UIItems;
 using TestStack.White.Utility;
-using Xunit;
 
 namespace TestStack.White.UITests.InputDevices
 {
-    public class DragAndDropTests : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class DragAndDropTests : WhiteUITestBase
     {
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public DragAndDropTests(WindowsFramework framework)
+            : base(framework)
         {
-            RunTest(DragAndDrop);
-            RunTest(DragAndDropBasedOnPosition);
         }
 
-        void DragAndDropBasedOnPosition()
+        [Test]
+        public void DragAndDropBasedOnPositionTest()
         {
             using (var window = StartScenario("DragDropScenario", "DragAndDropTestWindow"))
             {
                 var button = window.Get<Button>("Button");
                 var textBox = window.Get<TextBox>("TextBox");
-
                 Mouse.Instance.DragAndDrop(textBox, textBox.Bounds.Center(), button, button.Bounds.Center());
 
-                Retry.For(() => Assert.Equal("TextBoxDraggedOntoButton", window.Get<Label>("DragDropResults").Text),
+                Retry.For(() => Assert.That(window.Get<Label>("DragDropResults").Text, Is.EqualTo("TextBoxDraggedOntoButton")),
                     TimeSpan.FromSeconds(2));
             }
         }
 
-        void DragAndDrop()
+        [Test]
+        public void DragAndDropTest()
         {
             using (var window = StartScenario("DragDropScenario", "DragAndDropTestWindow"))
             {
@@ -39,15 +39,9 @@ void DragAndDrop()
                 var textBox = window.Get<TextBox>("TextBox");
                 Mouse.Instance.DragAndDrop(textBox, button);
 
-                Retry.For(() => Assert.Equal("TextBoxDraggedOntoButton", window.Get<Label>("DragDropResults").Text),
+                Retry.For(() => Assert.That(window.Get<Label>("DragDropResults").Text, Is.EqualTo("TextBoxDraggedOntoButton")),
                     TimeSpan.FromSeconds(2));
             }
         }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/InputDevices/KeyboardTest.cs b/src/TestStack.White.UITests/InputDevices/KeyboardTests.cs
similarity index 60%
rename from src/TestStack.White.UITests/InputDevices/KeyboardTest.cs
rename to src/TestStack.White.UITests/InputDevices/KeyboardTests.cs
index 4a106a64..a1471918 100644
--- a/src/TestStack.White.UITests/InputDevices/KeyboardTest.cs
+++ b/src/TestStack.White.UITests/InputDevices/KeyboardTests.cs
@@ -1,28 +1,29 @@
-﻿using System.Collections.Generic;
+﻿using NUnit.Framework;
+using System;
 using System.Text;
 using TestStack.White.InputDevices;
 using TestStack.White.UIItems;
 using TestStack.White.WindowsAPI;
-using Xunit;
 
 namespace TestStack.White.UITests.InputDevices
 {
-    public class KeyboardTest : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class KeyboardTests : WhiteUITestBase
     {
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public KeyboardTests(WindowsFramework framework)
+            : base(framework)
         {
-            RunTest(EnterAccentedChars);
-            RunTest(EnterUnicodeCharacters);
-            RunTest(MultilineTextBox);
-            RunTest(ShouldSetTheValueOfATextBox);
-            RunTest(ShouldBeAbleToPressLeftAndRightCursorKeys);
-            RunTest(DoNotAllowToLeaveKeyWhichIsNotHeld);
-            RunTest(CapsLock);
-            RunTest(LeaveAllKeys);
-            RunTest(LeaveKey);
         }
 
-        void EnterAccentedChars()
+        [OneTimeTearDown]
+        public void Teardown()
+        {
+            Keyboard.LeaveAllKeys();
+        }
+
+        [Test]
+        public void EnterAccentedCharsTest()
         {
             SelectInputControls();
             var textBox = MainWindow.Get<TextBox>("TextBox");
@@ -30,10 +31,11 @@ void EnterAccentedChars()
 
             textBox.BulkText = text;
 
-            Assert.Equal(text, textBox.Text);
+            Assert.That(textBox.Text, Is.EqualTo(text));
         }
 
-        void EnterUnicodeCharacters()
+        [Test]
+        public void EnterUnicodeCharactersTest()
         {
             SelectInputControls();
             var textBox = MainWindow.Get<TextBox>("TextBox");
@@ -41,10 +43,11 @@ void EnterUnicodeCharacters()
 
             textBox.BulkText = text;
 
-            Assert.Equal(text, textBox.Text);
+            Assert.That(textBox.Text, Is.EqualTo(text));
         }
 
-        void ShouldSetTheValueOfATextBox()
+        [Test]
+        public void ShouldSetTheValueOfATextBoxTest()
         {
             SelectInputControls();
             var textBox = MainWindow.Get<TextBox>("TextBox");
@@ -58,7 +61,8 @@ void ShouldSetTheValueOfATextBox()
             EnterAndAssertValueOfTextEntered(textBox, "!@#$%^&*()");
         }
 
-        void ShouldBeAbleToPressLeftAndRightCursorKeys()
+        [Test]
+        public void ShouldBeAbleToPressLeftAndRightCursorKeysTest()
         {
             SelectInputControls();
             var textBox = MainWindow.Get<TextBox>("TextBox");
@@ -66,50 +70,55 @@ void ShouldBeAbleToPressLeftAndRightCursorKeys()
 
             Keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.RIGHT, MainWindow);
             Keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.BACKSPACE, MainWindow);
-            Assert.Equal("Textbo", textBox.Text);
+            Assert.That(textBox.Text, Is.EqualTo("Textbo"));
 
             Keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.LEFT, MainWindow);
             Keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.LEFT, MainWindow);
             Keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.BACKSPACE, MainWindow);
-            Assert.Equal("Texbo", textBox.Text);
+            Assert.That(textBox.Text, Is.EqualTo("Texbo"));
         }
 
-        void DoNotAllowToLeaveKeyWhichIsNotHeld()
+        [Test]
+        public void DoNotAllowToLeaveKeyWhichIsNotHeldTest()
         {
-            Assert.Throws<InputDeviceException>(()=>Keyboard.Instance.LeaveKey(KeyboardInput.SpecialKeys.LEFT, MainWindow));
+            Assert.That(() => { Keyboard.Instance.LeaveKey(KeyboardInput.SpecialKeys.LEFT, MainWindow); }, Throws.TypeOf<InputDeviceException>());
         }
 
-        void CapsLock()
+        [Test]
+        public void CapsLockTest()
         {
             SelectInputControls();
             var textBox = MainWindow.Get<TextBox>("TextBox");
             ClearTextBox(textBox);
             Keyboard.CapsLockOn = false;
-            Assert.Equal(false, Keyboard.CapsLockOn);
+            Assert.That(Keyboard.CapsLockOn, Is.False);
             Keyboard.CapsLockOn = true;
-            Assert.Equal(true, Keyboard.CapsLockOn);
+            Assert.That(Keyboard.CapsLockOn, Is.True);
             Keyboard.CapsLockOn = false;
-            Assert.Equal(false, Keyboard.CapsLockOn);
+            Assert.That(Keyboard.CapsLockOn, Is.False);
         }
 
-        void LeaveAllKeys()
+        [Test]
+        public void LeaveAllKeysTest()
         {
             Keyboard.HoldKey(KeyboardInput.SpecialKeys.ALT);
             Keyboard.HoldKey(KeyboardInput.SpecialKeys.CONTROL);
-            Assert.Equal(2, Keyboard.HeldKeys.Length);
+            Assert.That(Keyboard.HeldKeys, Has.Length.EqualTo(2));
             Keyboard.LeaveAllKeys();
-            Assert.Equal(0, Keyboard.HeldKeys.Length);
+            Assert.That(Keyboard.HeldKeys, Has.Length.EqualTo(0));
         }
 
-        void LeaveKey()
+        [Test]
+        public void LeaveKeyTest()
         {
             Keyboard.HoldKey(KeyboardInput.SpecialKeys.ALT);
-            Assert.Equal(1, Keyboard.HeldKeys.Length);
+            Assert.That(Keyboard.HeldKeys, Has.Length.EqualTo(1));
             Keyboard.LeaveKey(KeyboardInput.SpecialKeys.ALT);
-            Assert.Equal(0, Keyboard.HeldKeys.Length);
+            Assert.That(Keyboard.HeldKeys, Has.Length.EqualTo(0));
         }
 
-        void MultilineTextBox()
+        [Test]
+        public void MultilineTextBoxTest()
         {
             SelectInputControls();
             var builder = new StringBuilder();
@@ -117,31 +126,20 @@ void MultilineTextBox()
             builder.Append("efgh").AppendLine();
             var multilineTextBox = MainWindow.Get<TextBox>("MultiLineTextBox");
             multilineTextBox.Text = builder.ToString();
-            Assert.Equal(builder.ToString(), multilineTextBox.Text);
+            Assert.That(multilineTextBox.Text, Is.EqualTo(builder.ToString()));
         }
 
-        void EnterAndAssertValueOfTextEntered(TextBox textBox, string stringToType)
+        private void EnterAndAssertValueOfTextEntered(TextBox textBox, string stringToType)
         {
             ClearTextBox(textBox);
             Keyboard.Send(stringToType, MainWindow);
-            Assert.Equal(stringToType, textBox.Text);
+            Assert.That(textBox.Text, Is.EqualTo(stringToType));
             ClearTextBox(textBox);
         }
 
-        void ClearTextBox(TextBox textBox)
+        private void ClearTextBox(TextBox textBox)
         {
-            textBox.Text = string.Empty;
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
-        }
-
-        public void Dispose()
-        {
-            Keyboard.LeaveAllKeys();
+            textBox.Text = String.Empty;
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/InputDevices/MouseTest.cs b/src/TestStack.White.UITests/InputDevices/MouseTest.cs
deleted file mode 100644
index 0859dfbc..00000000
--- a/src/TestStack.White.UITests/InputDevices/MouseTest.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Windows;
-using TestStack.White.InputDevices;
-using TestStack.White.UIA;
-using TestStack.White.UIItems;
-using TestStack.White.Utility;
-using Xunit;
-
-namespace TestStack.White.UITests.InputDevices
-{
-    public class MouseTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(Cursor);
-            RunTest(Location);
-            RunTest(RightClick);
-        }
-
-        void Cursor()
-        {
-            MouseCursor cursor = Mouse.Instance.Cursor;
-
-            Assert.NotNull(cursor);
-        }
-
-        void Location()
-        {
-            Mouse mouse = Mouse.Instance;
-            var point = new Point(100, 100);
-            Assert.NotEqual(point, mouse.Location);
-            mouse.Location = point;
-            Retry.For(()=>Assert.Equal(point, mouse.Location), TimeSpan.FromSeconds(5));
-        }
-
-        void RightClick()
-        {
-            var button = MainWindow.Get<Button>("ButtonWithTooltip");
-            Mouse.Instance.Location = button.Bounds.Center();
-            Mouse.Instance.RightClick();
-
-            Retry.For(()=>Assert.Equal("Right click received", button.Text), TimeSpan.FromSeconds(5));
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/InputDevices/MouseTests.cs b/src/TestStack.White.UITests/InputDevices/MouseTests.cs
new file mode 100644
index 00000000..7169f9a3
--- /dev/null
+++ b/src/TestStack.White.UITests/InputDevices/MouseTests.cs
@@ -0,0 +1,46 @@
+using NUnit.Framework;
+using System;
+using System.Windows;
+using TestStack.White.InputDevices;
+using TestStack.White.UIA;
+using TestStack.White.UIItems;
+using TestStack.White.Utility;
+
+namespace TestStack.White.UITests.InputDevices
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class MouseTests : WhiteUITestBase
+    {
+        public MouseTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void CursorTest()
+        {
+            var cursor = Mouse.Instance.Cursor;
+            Assert.That(cursor, Is.Not.Null);
+        }
+
+        [Test]
+        public void LocationTest()
+        {
+            var mouse = Mouse.Instance;
+            var point = new Point(100, 100);
+            Assert.That(mouse.Location, Is.Not.EqualTo(point));
+            mouse.Location = point;
+            Retry.For(() => Assert.That(mouse.Location, Is.EqualTo(point)), TimeSpan.FromSeconds(5));
+        }
+
+        [Test]
+        public void RightClickTest()
+        {
+            var button = MainWindow.Get<Button>("ButtonWithTooltip");
+            Mouse.Instance.Location = button.Bounds.Center();
+            Mouse.Instance.RightClick();
+            Retry.For(() => Assert.That(button.Text, Is.EqualTo("Right click received")), TimeSpan.FromSeconds(5));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Interceptors/DisabledControlsTest.cs b/src/TestStack.White.UITests/Interceptors/DisabledControlsTests.cs
similarity index 59%
rename from src/TestStack.White.UITests/Interceptors/DisabledControlsTest.cs
rename to src/TestStack.White.UITests/Interceptors/DisabledControlsTests.cs
index 13cd27ab..3fc0d1e1 100644
--- a/src/TestStack.White.UITests/Interceptors/DisabledControlsTest.cs
+++ b/src/TestStack.White.UITests/Interceptors/DisabledControlsTests.cs
@@ -1,34 +1,35 @@
+using NUnit.Framework;
 using System;
-using System.Collections.Generic;
 using System.Windows.Automation;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.ListBoxItems;
 using TestStack.White.Utility;
-using Xunit;
 
 namespace TestStack.White.UITests.Interceptors
 {
     //TODO: Check all operations and write tests possible on all disabled uiitem
-    public class DisabledControlsTest : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class DisabledControlsTests : WhiteUITestBase
     {
-        protected override void ExecuteTestRun(WindowsFramework framework)
+        public DisabledControlsTests(WindowsFramework framework)
+            : base(framework)
         {
-            RunTest(DoNotAllowActionOnDisabledControls);
-            RunTest(AllowActionsPossibleOnDisabledInputControls);
-            RunTest(AllowActionsPossibleOnDisabledListControls);
         }
 
-        void DoNotAllowActionOnDisabledControls()
+        [Test]
+        public void DoNotAllowActionOnDisabledControlsTest()
         {
             SelectInputControls();
             var textBox = MainWindow.Get<TextBox>("TextBox");
             MainWindow.Get<Button>("DisableControls").Click();
             Retry.For(() => !textBox.Enabled, TimeSpan.FromSeconds(2));
-            Assert.Throws<ElementNotEnabledException>(() => { textBox.Text = "blah"; });
+            Assert.That(() => { textBox.Text = "blah"; }, Throws.TypeOf<ElementNotEnabledException>());
             MainWindow.Get<Button>("DisableControls").Click();
         }
 
-        void AllowActionsPossibleOnDisabledInputControls()
+        [Test]
+        public void AllowActionsPossibleOnDisabledInputControlsTest()
         {
             SelectInputControls();
             var textBox = MainWindow.Get<TextBox>("TextBox");
@@ -39,11 +40,12 @@ void AllowActionsPossibleOnDisabledInputControls()
             MainWindow.Get<Button>("DisableControls").Click();
 
             // Assert we can still read the values
-            Assert.Equal("blah", textBox.Text);
+            Assert.That(textBox.Text, Is.EqualTo("blah"));
             MainWindow.Get<Button>("DisableControls").Click();
         }
 
-        void AllowActionsPossibleOnDisabledListControls()
+        [Test]
+        public void AllowActionsPossibleOnDisabledListControlsTest()
         {
             SelectListControls();
             var comboBox = MainWindow.Get<ComboBox>("AComboBox");
@@ -54,14 +56,8 @@ void AllowActionsPossibleOnDisabledListControls()
             MainWindow.Get<Button>("DisableControls").Click();
 
             // Assert we can still read the values
-            Assert.Equal("Test2", comboBox.SelectedItem.Text);
+            Assert.That(comboBox.SelectedItem.Text, Is.EqualTo("Test2"));
             MainWindow.Get<Button>("DisableControls").Click();
         }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
-        }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Interceptors/ScrollInterceptorTest.cs b/src/TestStack.White.UITests/Interceptors/ScrollInterceptorTest.cs
deleted file mode 100644
index 4704f63c..00000000
--- a/src/TestStack.White.UITests/Interceptors/ScrollInterceptorTest.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.ListBoxItems;
-using Xunit;
-
-namespace TestStack.White.UITests.Interceptors
-{
-    public class ScrollInterceptorTest : WhiteTestBase
-    {
-        public void GetItemOutsideWindowButWithoutScroll()
-        {
-            using (var window = StartScenario("OpenFormWithoutScrollAndItemOutside", "FormWithoutScrollAndItemOutside"))
-            {
-                var listBox = window.Get<ListBox>("ListBox");
-                Assert.NotEqual(null, listBox);
-                Assert.Equal(0, listBox.Items.Count);
-            }
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            GetItemOutsideWindowButWithoutScroll();
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Interceptors/ScrollInterceptorTests.cs b/src/TestStack.White.UITests/Interceptors/ScrollInterceptorTests.cs
new file mode 100644
index 00000000..036d2db2
--- /dev/null
+++ b/src/TestStack.White.UITests/Interceptors/ScrollInterceptorTests.cs
@@ -0,0 +1,27 @@
+using NUnit.Framework;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.ListBoxItems;
+
+namespace TestStack.White.UITests.Interceptors
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class ScrollInterceptorTests : WhiteUITestBase
+    {
+        public ScrollInterceptorTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void GetItemOutsideWindowButWithoutScrollTest()
+        {
+            using (var window = StartScenario("OpenFormWithoutScrollAndItemOutside", "FormWithoutScrollAndItemOutside"))
+            {
+                var listBox = window.Get<ListBox>("ListBox");
+                Assert.That(listBox, Is.Not.Null);
+                Assert.That(listBox.Items, Has.Count.EqualTo(0));
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/MessageBoxTest.cs b/src/TestStack.White.UITests/MessageBoxTest.cs
deleted file mode 100644
index 2d99fbcc..00000000
--- a/src/TestStack.White.UITests/MessageBoxTest.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.Configuration;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.Finders;
-using TestStack.White.UIItems.WindowItems;
-using Xunit;
-
-namespace TestStack.White.UITests
-{
-    public class MessageBoxTest : WhiteTestBase
-    {
-        void CloseMessageBoxTest()
-        {
-            MainWindow.Get<Button>("OpenMessageBox").Click();
-            Window messageBox = MainWindow.MessageBox("Test message box");
-            var label = MainWindow.Get<Label>("65535");
-            Assert.Equal("Close me", label.Text);
-            messageBox.Close();
-        }
-
-        void ClickButtonOnMessageBox()
-        {
-            MainWindow.Get<Button>("OpenMessageBox").Click();
-            Window messageBox = MainWindow.MessageBox("Test message box");
-            messageBox.Get<Button>(SearchCriteria.ByAutomationId("2")).Click();
-        }
-
-        void ThrowsWhenNotFound()
-        {
-            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.FindWindowTimeout = 500))
-            {
-                var exception = Assert.Throws<AutomationException>(() => MainWindow.MessageBox("foo"));
-
-                Assert.Equal("Could not find modal window with title: foo", exception.Message);
-            }
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(CloseMessageBoxTest);
-            RunTest(ClickButtonOnMessageBox);
-            RunTest(ThrowsWhenNotFound);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/MessageBoxTests.cs b/src/TestStack.White.UITests/MessageBoxTests.cs
new file mode 100644
index 00000000..c41191d5
--- /dev/null
+++ b/src/TestStack.White.UITests/MessageBoxTests.cs
@@ -0,0 +1,45 @@
+using NUnit.Framework;
+using TestStack.White.Configuration;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.Finders;
+
+namespace TestStack.White.UITests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class MessageBoxTests : WhiteUITestBase
+    {
+        public MessageBoxTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void CloseMessageBoxTest()
+        {
+            MainWindow.Get<Button>("OpenMessageBox").Click();
+            var messageBox = MainWindow.MessageBox("Test message box");
+            var label = MainWindow.Get<Label>("65535");
+            Assert.That(label.Text, Is.EqualTo("Close me"));
+            messageBox.Close();
+        }
+
+        [Test]
+        public void ClickButtonOnMessageBoxTest()
+        {
+            MainWindow.Get<Button>("OpenMessageBox").Click();
+            var messageBox = MainWindow.MessageBox("Test message box");
+            messageBox.Get<Button>(SearchCriteria.ByAutomationId("2")).Click();
+        }
+
+        [Test]
+        public void ThrowsWhenNotFoundTest()
+        {
+            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.FindWindowTimeout = 500))
+            {
+                Assert.That(() => { MainWindow.MessageBox("foo"); },
+                   Throws.TypeOf<AutomationException>().With.Message.EqualTo("Could not find modal window with title: foo"));
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ModalWindowTest.cs b/src/TestStack.White.UITests/ModalWindowTest.cs
deleted file mode 100644
index 34824475..00000000
--- a/src/TestStack.White.UITests/ModalWindowTest.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.Configuration;
-using TestStack.White.Factory;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.Finders;
-using TestStack.White.UIItems.WindowItems;
-using Xunit;
-
-namespace TestStack.White.UITests
-{
-    public class ModalWindowTest : WhiteTestBase
-    {
-        void GetModalWindow()
-        {
-            LaunchModalWindow();
-            Window modalWindow = MainWindow.ModalWindow("GetMultiple");
-            Assert.NotNull(modalWindow);
-            modalWindow.Close();
-        }
-
-        void GetModalWindowBasedOnSearchCriteria()
-        {
-            LaunchModalWindow();
-            Window modalWindow = MainWindow.ModalWindow(SearchCriteria.ByText("GetMultiple"));
-            Assert.NotNull(modalWindow);
-            modalWindow.Close();
-        }
-
-        void GetControlFromModalWindowWhenSessionActive()
-        {
-            LaunchModalWindow();
-            Window modalWindow = MainWindow.ModalWindow("GetMultiple", InitializeOption.NoCache.AndIdentifiedBy("ModalForm"));
-            Assert.NotNull(modalWindow);
-            modalWindow.Close();
-        }
-
-        void ThrowsWhenNotFound()
-        {
-            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(s => s.FindWindowTimeout = 1000))
-            {
-                var exception = Assert.Throws<AutomationException>(() => MainWindow.ModalWindow("foo"));
-                Assert.Equal("Could not find modal window with title: foo", exception.Message);
-            }
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(GetModalWindow);
-            RunTest(GetModalWindowBasedOnSearchCriteria);
-            RunTest(GetControlFromModalWindowWhenSessionActive);
-            RunTest(ThrowsWhenNotFound);
-        }
-
-        void LaunchModalWindow()
-        {
-            MainWindow.Get<Button>("GetMultipleButton").Click();
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/ModalWindowTests.cs b/src/TestStack.White.UITests/ModalWindowTests.cs
new file mode 100644
index 00000000..988694b0
--- /dev/null
+++ b/src/TestStack.White.UITests/ModalWindowTests.cs
@@ -0,0 +1,60 @@
+using NUnit.Framework;
+using TestStack.White.Configuration;
+using TestStack.White.Factory;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.Finders;
+
+namespace TestStack.White.UITests
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class ModalWindowTests : WhiteUITestBase
+    {
+        public ModalWindowTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void GetModalWindowTest()
+        {
+            LaunchModalWindow();
+            var modalWindow = MainWindow.ModalWindow("GetMultiple");
+            Assert.That(modalWindow, Is.Not.Null);
+            modalWindow.Close();
+        }
+
+        [Test]
+        public void GetModalWindowBasedOnSearchCriteriaTest()
+        {
+            LaunchModalWindow();
+            var modalWindow = MainWindow.ModalWindow(SearchCriteria.ByText("GetMultiple"));
+            Assert.That(modalWindow, Is.Not.Null);
+            modalWindow.Close();
+        }
+
+        [Test]
+        public void GetControlFromModalWindowWhenSessionActiveTest()
+        {
+            LaunchModalWindow();
+            var modalWindow = MainWindow.ModalWindow("GetMultiple", InitializeOption.NoCache.AndIdentifiedBy("ModalForm"));
+            Assert.That(modalWindow, Is.Not.Null);
+            modalWindow.Close();
+        }
+
+        [Test]
+        public void ThrowsWhenNotFoundTest()
+        {
+            using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(s => s.FindWindowTimeout = 1000))
+            {
+                Assert.That(() => { MainWindow.ModalWindow("foo"); },
+                   Throws.TypeOf<AutomationException>().With.Message.EqualTo("Could not find modal window with title: foo"));
+            }
+        }
+
+        private void LaunchModalWindow()
+        {
+            MainWindow.Get<Button>("GetMultipleButton").Click();
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/NativeWindowTest.cs b/src/TestStack.White.UITests/NativeWindowTests.cs
similarity index 68%
rename from src/TestStack.White.UITests/NativeWindowTest.cs
rename to src/TestStack.White.UITests/NativeWindowTests.cs
index 483ffd11..aadcf0dd 100644
--- a/src/TestStack.White.UITests/NativeWindowTest.cs
+++ b/src/TestStack.White.UITests/NativeWindowTests.cs
@@ -1,16 +1,30 @@
+using NUnit.Framework;
 using System;
-using System.Collections.Generic;
 using TestStack.White.UIA;
 using TestStack.White.UIItems;
 using TestStack.White.WindowsAPI;
 
 namespace TestStack.White.UITests
 {
-    public class NativeWindowTest : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class NativeWindowTests : WhiteUITestBase
     {
-        void BackgroundColor()
+        public NativeWindowTests(WindowsFramework framework)
+            : base(framework)
         {
-            var colorref = new COLORREF {R = 200};
+        }
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            SelectInputControls();
+        }
+
+        [Test]
+        public void BackgroundColorTest()
+        {
+            var colorref = new COLORREF { R = 200 };
             Console.WriteLine(colorref.R);
 
             var nativeWindow = new NativeWindow(new IntPtr(MainWindow.Get<TextBox>("TextBox").AutomationElement.Current.NativeWindowHandle));
@@ -25,17 +39,5 @@ void BackgroundColor()
             Console.WriteLine(nativeWindow.BackgroundColor);
             Console.WriteLine(nativeWindow.TextColor);
         }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            SelectInputControls();
-            RunTest(BackgroundColor);
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Reporting/SessionReportTest.cs b/src/TestStack.White.UITests/Reporting/SessionReportTest.cs
deleted file mode 100644
index a345d905..00000000
--- a/src/TestStack.White.UITests/Reporting/SessionReportTest.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using TestStack.White.Reporting.Domain;
-using Xunit;
-
-namespace TestStack.White.UITests.Reporting
-{
-    public class SessionReportTest
-    {
-        readonly SessionReport report;
-
-        public SessionReportTest()
-        {
-            report = new SessionReport("archiveLocation", "testName");
-        }
-
-        [Fact]
-        public void ShouldBeEmptyWhenFirstCreated()
-        {
-            Assert.Equal(true, report.IsEmpty);
-        }
-
-        [Fact]
-        public void Next()
-        {
-            report.Next(typeof(object));
-            report.Next(typeof(object));
-            Assert.Equal(1, report.SubFlows.Count);
-            Assert.Equal(2, report.SubFlows[0].FlowSteps.Count);
-        }
-
-        [Fact]
-        public void Start()
-        {
-            report.Begin("subFlow1");
-            report.Next(typeof(object));
-            report.Begin("subFlow2");
-            report.Next(typeof(object));
-            Assert.Equal(2, report.SubFlows.Count);
-
-            report.Begin("subFlow3");
-            report.Next(typeof(object));
-            Assert.Equal(3, report.SubFlows.Count);
-        }
-
-        [Fact]
-        public void ShouldAddANodeToTheCurrentSubFlow()
-        {
-            report.Begin("subFlow1");
-            report.Next(typeof(object));
-            report.Next(typeof(object));
-            Assert.Equal(1, report.SubFlows.Count);
-            Assert.Equal(2, report.SubFlows[0].FlowSteps.Count);
-
-            report.Begin("subFlow2");
-            report.Next(typeof(object));
-            Assert.Equal(2, report.SubFlows.Count);
-            Assert.Equal(2, report.SubFlows[0].FlowSteps.Count);
-            Assert.Equal(1, report.SubFlows[1].FlowSteps.Count);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Reporting/SessionReportTests.cs b/src/TestStack.White.UITests/Reporting/SessionReportTests.cs
new file mode 100644
index 00000000..00bb12b1
--- /dev/null
+++ b/src/TestStack.White.UITests/Reporting/SessionReportTests.cs
@@ -0,0 +1,63 @@
+using NUnit.Framework;
+using TestStack.White.Reporting.Domain;
+
+namespace TestStack.White.UITests.Reporting
+{
+    [TestFixture]
+    public class SessionReportTests
+    {
+        [Test]
+        public void ShouldBeEmptyWhenFirstCreated()
+        {
+            var report = CreateTestObject();
+            Assert.That(report.IsEmpty, Is.True);
+        }
+
+        [Test]
+        public void Next()
+        {
+            var report = CreateTestObject();
+            report.Next(typeof(object));
+            report.Next(typeof(object));
+            Assert.That(report.SubFlows, Has.Count.EqualTo(1));
+            Assert.That(report.SubFlows[0].FlowSteps, Has.Count.EqualTo(2));
+        }
+
+        [Test]
+        public void Start()
+        {
+            var report = CreateTestObject();
+            report.Begin("subFlow1");
+            report.Next(typeof(object));
+            report.Begin("subFlow2");
+            report.Next(typeof(object));
+            Assert.That(report.SubFlows, Has.Count.EqualTo(2));
+
+            report.Begin("subFlow3");
+            report.Next(typeof(object));
+            Assert.That(report.SubFlows, Has.Count.EqualTo(3));
+        }
+
+        [Test]
+        public void ShouldAddANodeToTheCurrentSubFlow()
+        {
+            var report = CreateTestObject();
+            report.Begin("subFlow1");
+            report.Next(typeof(object));
+            report.Next(typeof(object));
+            Assert.That(report.SubFlows, Has.Count.EqualTo(1));
+            Assert.That(report.SubFlows[0].FlowSteps, Has.Count.EqualTo(2));
+
+            report.Begin("subFlow2");
+            report.Next(typeof(object));
+            Assert.That(report.SubFlows, Has.Count.EqualTo(2));
+            Assert.That(report.SubFlows[0].FlowSteps, Has.Count.EqualTo(2));
+            Assert.That(report.SubFlows[1].FlowSteps, Has.Count.EqualTo(1));
+        }
+
+        private SessionReport CreateTestObject()
+        {
+            return new SessionReport("archiveLocation", "testName");
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Reporting/SubFlowTest.cs b/src/TestStack.White.UITests/Reporting/SubFlowTest.cs
deleted file mode 100644
index 9ec517f2..00000000
--- a/src/TestStack.White.UITests/Reporting/SubFlowTest.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using System;
-using TestStack.White.Reporting.Domain;
-using Xunit;
-
-namespace TestStack.White.UITests.Reporting
-{
-    public class SubFlowTest
-    {
-        readonly SubFlow subFlow;
-
-        public SubFlowTest()
-        {
-            subFlow = new SubFlow("subFlow", "flow", "archiveLocation");
-        }
-
-        [Fact]
-        public void NextOnSameNode()
-        {
-            subFlow.Next(One());
-            subFlow.Act();
-            subFlow.Act();
-            Assert.Equal(1, subFlow.FlowSteps.Count);
-            Assert.Equal(3, subFlow.FlowSteps[0].ScreenShots.Count);
-        }
-
-        [Fact]
-        public void Flow()
-        {
-            subFlow.Next(One());           
-            subFlow.Act();           
-            subFlow.Act();           
-            subFlow.Next(Two());           
-            subFlow.Act();
-            Assert.Equal(2, subFlow.FlowSteps.Count);
-            Assert.Equal(3, subFlow.FlowSteps[0].ScreenShots.Count);
-            Assert.Equal(2, subFlow.FlowSteps[1].ScreenShots.Count);
-        }
-
-        private static Type One() {
-            return typeof(One);
-        }
-
-        private static Type Two() {
-            return typeof(Two);
-        }
-
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Reporting/SubFlowTests.cs b/src/TestStack.White.UITests/Reporting/SubFlowTests.cs
new file mode 100644
index 00000000..7064079d
--- /dev/null
+++ b/src/TestStack.White.UITests/Reporting/SubFlowTests.cs
@@ -0,0 +1,50 @@
+using System;
+using NUnit.Framework;
+using TestStack.White.Reporting.Domain;
+
+namespace TestStack.White.UITests.Reporting
+{
+    [TestFixture]
+    public class SubFlowTests
+    {
+        [Test]
+        public void NextOnSameNode()
+        {
+            var subFlow = CreateTestObject();
+            subFlow.Next(One());
+            subFlow.Act();
+            subFlow.Act();
+            Assert.That(subFlow.FlowSteps, Has.Count.EqualTo(1));
+            Assert.That(subFlow.FlowSteps[0].ScreenShots, Has.Count.EqualTo(3));
+        }
+
+        [Test]
+        public void Flow()
+        {
+            var subFlow = CreateTestObject();
+            subFlow.Next(One());
+            subFlow.Act();
+            subFlow.Act();
+            subFlow.Next(Two());
+            subFlow.Act();
+            Assert.That(subFlow.FlowSteps, Has.Count.EqualTo(2));
+            Assert.That(subFlow.FlowSteps[0].ScreenShots, Has.Count.EqualTo(3));
+            Assert.That(subFlow.FlowSteps[1].ScreenShots, Has.Count.EqualTo(2));
+        }
+
+        private SubFlow CreateTestObject()
+        {
+            return new SubFlow("subFlow", "flow", "archiveLocation");
+        }
+
+        private static Type One()
+        {
+            return typeof(One);
+        }
+
+        private static Type Two()
+        {
+            return typeof(Two);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Reporting/SubFlowsTest.cs b/src/TestStack.White.UITests/Reporting/SubFlowsTest.cs
deleted file mode 100644
index 8cd64a95..00000000
--- a/src/TestStack.White.UITests/Reporting/SubFlowsTest.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using TestStack.White.Reporting.Domain;
-using Xunit;
-
-namespace TestStack.White.UITests.Reporting
-{
-    public class SubFlowsTest
-    {
-        private readonly SubFlows flows;
-
-        public SubFlowsTest()
-        {
-            flows = new SubFlows("archiveLocation", "flowName");
-        }
-
-        [Fact]
-        public void Start()
-        {
-            flows.Begin("subflow1");
-            flows.Next(typeof (One));
-            flows.Act();
-            flows.Next(typeof (Two));
-
-            flows.Begin("subflow2");
-            flows.Next(typeof (One));
-            flows.Finish();
-            Assert.Equal(2, flows.Count);
-            Assert.Equal(2, flows[0].FlowSteps.Count);
-            Assert.Equal(1, flows[1].FlowSteps.Count);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Reporting/SubFlowsTests.cs b/src/TestStack.White.UITests/Reporting/SubFlowsTests.cs
new file mode 100644
index 00000000..c6a08471
--- /dev/null
+++ b/src/TestStack.White.UITests/Reporting/SubFlowsTests.cs
@@ -0,0 +1,32 @@
+using NUnit.Framework;
+using TestStack.White.Reporting.Domain;
+
+namespace TestStack.White.UITests.Reporting
+{
+    [TestFixture]
+    public class SubFlowsTests
+    {
+        private readonly SubFlows flows;
+
+        public SubFlowsTests()
+        {
+            flows = new SubFlows("archiveLocation", "flowName");
+        }
+
+        [Test]
+        public void Start()
+        {
+            flows.Begin("subflow1");
+            flows.Next(typeof(One));
+            flows.Act();
+            flows.Next(typeof(Two));
+
+            flows.Begin("subflow2");
+            flows.Next(typeof(One));
+            flows.Finish();
+            Assert.That(flows, Has.Count.EqualTo(2));
+            Assert.That(flows[0].FlowSteps, Has.Count.EqualTo(2));
+            Assert.That(flows[1].FlowSteps, Has.Count.EqualTo(1));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Repository/RepositoryTests.cs b/src/TestStack.White.UITests/Repository/RepositoryTests.cs
deleted file mode 100644
index 6ca2c8b2..00000000
--- a/src/TestStack.White.UITests/Repository/RepositoryTests.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-﻿using System.Collections.Generic;
-using TestStack.White.UIItems;
-
-namespace TestStack.White.UITests.Repository
-{
-    public class RepositoryTests : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Repository/WorkSessionTest.cs b/src/TestStack.White.UITests/Repository/WorkSessionTests.cs
similarity index 53%
rename from src/TestStack.White.UITests/Repository/WorkSessionTest.cs
rename to src/TestStack.White.UITests/Repository/WorkSessionTests.cs
index 5002b249..a289a898 100644
--- a/src/TestStack.White.UITests/Repository/WorkSessionTest.cs
+++ b/src/TestStack.White.UITests/Repository/WorkSessionTests.cs
@@ -1,54 +1,54 @@
+using NUnit.Framework;
 using System.IO;
 using TestStack.White.Factory;
 using TestStack.White.ScreenObjects.Services;
 using TestStack.White.ScreenObjects.Sessions;
 using TestStack.White.UIItems;
-using TestStack.White.UIItems.WindowItems;
 using TestStack.White.UITests.Infrastructure;
-using Xunit;
 
 namespace TestStack.White.UITests.Repository
 {
-    public class WorkSessionTest
+    [TestFixture]
+    public class WorkSessionTests
     {
-        [Fact]
+        [Test]
         public void ShouldNotSaveAnyWindowInformationToFileWhenNoWindowsAreLaunched()
         {
-            int numberOfFilesBeforeSessionStart = NumberOfFiles();
+            var numberOfFilesBeforeSessionStart = NumberOfFiles();
             using (WorkSession()){}
-            Assert.Equal(numberOfFilesBeforeSessionStart, NumberOfFiles());
+            Assert.That(NumberOfFiles(), Is.EqualTo(numberOfFilesBeforeSessionStart));
         }
 
-        [Fact]
+        [Test]
         public void ShouldSaveWindowInformationInFile()
         {
             File.Delete("foo.xml");
-            using (WorkSession workSession = WorkSession())
+            using (var workSession = WorkSession())
             {
-                Application application = new WinformsTestConfiguration().LaunchApplication();
+                var application = new WinformsTestConfiguration().LaunchApplication();
                 workSession.Attach(application);
-                Window window = application.GetWindow("MainWindow", InitializeOption.NoCache.AndIdentifiedBy("foo"));
+                var window = application.GetWindow("MainWindow", InitializeOption.NoCache.AndIdentifiedBy("foo"));
                 window.Get<Button>("ButtonWithTooltip");
             }
-            Assert.True(File.Exists("foo.xml"));
+            Assert.That(File.Exists("foo.xml"), Is.True);
         }
 
-        [Fact]
+        [Test]
         public void ShouldFindControlBasedLocation()
         {
             File.Delete("foo.xml");
-            using (WorkSession workSession = WorkSession())
+            using (var workSession = WorkSession())
             {
-                Application application = new WinformsTestConfiguration().LaunchApplication();
+                var application = new WinformsTestConfiguration().LaunchApplication();
                 workSession.Attach(application);
-                Window window = application.GetWindow("MainWindow", InitializeOption.NoCache.AndIdentifiedBy("foo"));
+                var window = application.GetWindow("MainWindow", InitializeOption.NoCache.AndIdentifiedBy("foo"));
                 window.Get<Button>("ButtonWithTooltip");
             }
-            using (WorkSession workSession = WorkSession())
+            using (var workSession = WorkSession())
             {
-                Application application = new WinformsTestConfiguration().LaunchApplication();
+                var application = new WinformsTestConfiguration().LaunchApplication();
                 workSession.Attach(application);
-                Window window = application.GetWindow("MainWindow", InitializeOption.NoCache.AndIdentifiedBy("foo"));
+                var window = application.GetWindow("MainWindow", InitializeOption.NoCache.AndIdentifiedBy("foo"));
                 window.Get<Button>("ButtonWithTooltip");
             }
         }
diff --git a/src/TestStack.White.UITests/Scenarios/GetMultipleTest.cs b/src/TestStack.White.UITests/Scenarios/GetMultipleTest.cs
deleted file mode 100644
index 98155344..00000000
--- a/src/TestStack.White.UITests/Scenarios/GetMultipleTest.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-﻿using System.Collections.Generic;
-using System.Linq;
-using System.Windows.Automation;
-using TestStack.White.UIItems;
-using TestStack.White.UIItems.Finders;
-using Xunit;
-
-namespace TestStack.White.UITests.Scenarios
-{
-    public class GetMultipleTest : WhiteTestBase
-    {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(() => GetMultipleButtons(framework));
-            RunTest(() => GetControlBasedOnIndex(framework));
-        }
-
-        void GetControlBasedOnIndex(WindowsFramework framework)
-        {
-            using (var window = StartScenario("GetMultipleButton", "GetMultiple"))
-            {
-                var button = window.Get<Button>(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "Button").AndIndex(0));
-                Assert.NotNull(button);
-
-                var exception = Assert.Throws<AutomationException>(() => MainWindow.Get<TextBox>(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "Button").AndIndex(4)));
-                var expected = framework == WindowsFramework.Wpf?
-                    "Failed to get ControlType=edit,AutomationElementIdentifiers.NameProperty=Button,Index=4":
-                    "Failed to get (ControlType=edit or ControlType=document),AutomationElementIdentifiers.NameProperty=Button,Index=4";
-                Assert.Equal(expected, exception.Message);
-            }
-        }
-
-        void GetMultipleButtons(WindowsFramework framework)
-        {
-            MainWindow.Get<Button>("GetMultipleButton").Click();
-            var window = MainWindow.ModalWindow("GetMultiple");
-
-            try
-            {
-                var buttons = window.GetMultiple(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "Button")).OfType<Button>();
-                Assert.Equal(3, buttons.Count());
-
-                if (framework == WindowsFramework.Wpf)
-                {
-                    buttons = window.GetMultiple(SearchCriteria.ByAutomationId("Test")).OfType<Button>();
-                    Assert.Equal(3, buttons.Count());
-                }
-
-                var checkboxes = window.GetMultiple(SearchCriteria.ByControlType(ControlType.CheckBox)).OfType<CheckBox>();
-                Assert.Equal(3, checkboxes.Count());
-
-                checkboxes = window.GetMultiple(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "Checkbox")).OfType<CheckBox>();
-                Assert.Equal(3, checkboxes.Count());
-
-                if (framework == WindowsFramework.Wpf)
-                {
-                    checkboxes = window.GetMultiple(SearchCriteria.ByAutomationId("Test2")).OfType<CheckBox>();
-                    Assert.Equal(3, checkboxes.Count());
-                }
-
-                if (framework == WindowsFramework.Wpf)
-                {
-                    var customControls = window.GetMultiple(SearchCriteria.ByClassName("CustomItem"));
-
-                    Assert.Equal(3, customControls.Length);
-                }
-            }
-            finally
-            {
-                window.Close();
-            }
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Scenarios/GetMultipleTests.cs b/src/TestStack.White.UITests/Scenarios/GetMultipleTests.cs
new file mode 100644
index 00000000..004d959c
--- /dev/null
+++ b/src/TestStack.White.UITests/Scenarios/GetMultipleTests.cs
@@ -0,0 +1,77 @@
+﻿using NUnit.Framework;
+using System.Linq;
+using System.Windows.Automation;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.Finders;
+
+namespace TestStack.White.UITests.Scenarios
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class GetMultipleTests : WhiteUITestBase
+    {
+        public GetMultipleTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void GetControlBasedOnIndexTest()
+        {
+            using (var window = StartScenario("GetMultipleButton", "GetMultiple"))
+            {
+                var button = window.Get<Button>(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "Button").AndIndex(0));
+                Assert.That(button, Is.Not.Null);
+
+                var expected = Framework == WindowsFramework.Wpf ?
+                    "Failed to get ControlType=edit,AutomationElementIdentifiers.NameProperty=Button,Index=4" :
+                    "Failed to get (ControlType=edit or ControlType=document),AutomationElementIdentifiers.NameProperty=Button,Index=4";
+
+                Assert.That(() => { MainWindow.Get<TextBox>(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "Button").AndIndex(4)); },
+                    Throws.TypeOf<AutomationException>().With.
+                    Message.EqualTo(expected));
+            }
+        }
+
+        [Test]
+        public void GetMultipleButtonsTest()
+        {
+            MainWindow.Get<Button>("GetMultipleButton").Click();
+            var window = MainWindow.ModalWindow("GetMultiple");
+
+            try
+            {
+                var buttons = window.GetMultiple(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "Button")).OfType<Button>().ToList();
+                Assert.That(buttons, Has.Count.EqualTo(3));
+
+                if (Framework == WindowsFramework.Wpf)
+                {
+                    buttons = window.GetMultiple(SearchCriteria.ByAutomationId("Test")).OfType<Button>().ToList();
+                    Assert.That(buttons, Has.Count.EqualTo(3));
+                }
+
+                var checkboxes = window.GetMultiple(SearchCriteria.ByControlType(ControlType.CheckBox)).OfType<CheckBox>().ToList();
+                Assert.That(checkboxes, Has.Count.EqualTo(3));
+
+                checkboxes = window.GetMultiple(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "Checkbox")).OfType<CheckBox>().ToList();
+                Assert.That(checkboxes, Has.Count.EqualTo(3));
+
+                if (Framework == WindowsFramework.Wpf)
+                {
+                    checkboxes = window.GetMultiple(SearchCriteria.ByAutomationId("Test2")).OfType<CheckBox>().ToList();
+                    Assert.That(checkboxes, Has.Count.EqualTo(3));
+                }
+
+                if (Framework == WindowsFramework.Wpf)
+                {
+                    var customControls = window.GetMultiple(SearchCriteria.ByClassName("CustomItem")).ToList();
+                    Assert.That(customControls, Has.Count.EqualTo(3));
+                }
+            }
+            finally
+            {
+                window.Close();
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/Scenarios/Win32Tests.cs b/src/TestStack.White.UITests/Scenarios/Win32Tests.cs
index fde070bd..ffa96a39 100644
--- a/src/TestStack.White.UITests/Scenarios/Win32Tests.cs
+++ b/src/TestStack.White.UITests/Scenarios/Win32Tests.cs
@@ -1,4 +1,5 @@
-﻿using System.Diagnostics;
+﻿using NUnit.Framework;
+using System.Diagnostics;
 using System.Linq;
 using TestStack.White.Factory;
 using TestStack.White.UIItems;
@@ -7,17 +8,17 @@
 using TestStack.White.UIItems.MenuItems;
 using TestStack.White.UIItems.WindowStripControls;
 using TestStack.White.WindowsAPI;
-using Xunit;
 
 namespace TestStack.White.UITests.Scenarios
 {
+    [TestFixture]
     public class Win32Tests
     {
         const string ExeSourceFile = @"C:\Windows\system32\calc.exe";
         const string Notepad = @"C:\Windows\system32\notepad.exe";
         const string InternetExplorer = @"C:\Program Files\Internet Explorer\iexplore.exe";
 
-        [Fact]
+        [Test]
         public void NotepadTests()
         {
             using (var app = Application.Launch(Notepad))
@@ -29,34 +30,37 @@ public void NotepadTests()
 
                 using (var modalWindow = window.ModalWindow("Font"))
                 {
-                    Assert.NotNull(modalWindow);
+                    Assert.That(modalWindow, Is.Not.Null);
                 }
             }
         }
 
-        [Fact]
+        [Test]
+        [Ignore("There are different IE versions which make this test fail")]
         public void InternetExplorerTests()
         {
             using (var app = Application.Launch(InternetExplorer))
-            using (var window = app.GetWindows().Single())
             {
-                var button = window.Get<Button>(SearchCriteria.ByAutomationId("Item 3"));
-                //check if we can get a win32 tooltip
-                Assert.Equal("Tools (Alt+X)", window.GetToolTipOn(button).Text);
-                button.Click();
-                window.PopupMenu("Internet options").Click();
-                using (var internetOptions = window.ModalWindow("Internet Options"))
+                using (var window = app.GetWindows().Single())
                 {
-                    var textBox = internetOptions.Get<TextBox>(SearchCriteria.ByAutomationId("1487"));
+                    var button = window.Get<Button>(SearchCriteria.ByAutomationId("Item 3"));
+                    //check if we can get a win32 tooltip
+                    Assert.That(window.GetToolTipOn(button).Text, Is.EqualTo("Tools (Alt+X)"));
+                    button.Click();
+                    window.PopupMenu("Internet options").Click();
+                    using (var internetOptions = window.ModalWindow("Internet Options"))
+                    {
+                        var textBox = internetOptions.Get<TextBox>(SearchCriteria.ByAutomationId("1487"));
 
-                    textBox.Text = "http://google.com";
+                        textBox.Text = "http://google.com";
 
-                    Assert.Equal("http://google.com", textBox.Text);
+                        Assert.That(textBox.Text, Is.EqualTo("http://google.com"));
+                    }
                 }
             }
         }
 
-        [Fact]
+        [Test]
         public void CalculatorTests()
         {
             //strat process for the above exe file location
@@ -113,8 +117,8 @@ private static void PerformSummationOnCalculator(UIItemContainer mainWindow)
 
             //Get the result
             var resultLable = mainWindow.Get<Label>(SearchCriteria.ByAutomationId("150"));
-            string result = resultLable.Text;
-            Assert.Equal("6912", result);
+            var result = resultLable.Text;
+            Assert.That(result, Is.EqualTo("6912"));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/TestStack.White.UITests.csproj b/src/TestStack.White.UITests/TestStack.White.UITests.csproj
index c595ba06..4fa895db 100644
--- a/src/TestStack.White.UITests/TestStack.White.UITests.csproj
+++ b/src/TestStack.White.UITests/TestStack.White.UITests.csproj
@@ -12,7 +12,6 @@
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
   </PropertyGroup>
   <PropertyGroup>
     <SignAssembly>true</SignAssembly>
@@ -42,6 +41,10 @@
     <Reference Include="Castle.Core">
       <HintPath>..\packages\Castle.Core.3.3.0\lib\net40-client\Castle.Core.dll</HintPath>
     </Reference>
+    <Reference Include="nunit.framework, Version=3.0.5813.39032, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
+      <HintPath>..\packages\NUnit.3.0.1\lib\net40\nunit.framework.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
     <Reference Include="PresentationCore" />
     <Reference Include="System" />
     <Reference Include="System.Core" />
@@ -49,61 +52,58 @@
     <Reference Include="UIAutomationClient" />
     <Reference Include="UIAutomationTypes" />
     <Reference Include="WindowsBase" />
-    <Reference Include="xunit">
-      <HintPath>..\packages\xunit.1.9.2\lib\net20\xunit.dll</HintPath>
-    </Reference>
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="ControlTests\ColorTest.cs" />
-    <Compile Include="ControlTests\CustomUIItemTest.cs" />
-    <Compile Include="ControlTests\GroupBoxTest.cs" />
-    <Compile Include="ControlTests\HyperlinkTest.cs" />
-    <Compile Include="ControlTests\HScrollBarTest.cs" />
-    <Compile Include="ControlTests\ImageTest.cs" />
-    <Compile Include="ControlTests\InputControls\RadioButtonTest.cs" />
-    <Compile Include="ControlTests\InputControls\SpinnerTest.cs" />
-    <Compile Include="ControlTests\InputControls\TristateItemTest.cs" />
-    <Compile Include="ControlTests\MenuItems\MenuTest.cs" />
-    <Compile Include="ControlTests\MenuItems\PopUpMenuTest.cs" />
-    <Compile Include="ControlTests\PropertyGridTest.cs" />
-    <Compile Include="ControlTests\SliderTest.cs" />
-    <Compile Include="ControlTests\Table\TableCellTest.cs" />
-    <Compile Include="ControlTests\Table\TableRowsTest.cs" />
-    <Compile Include="ControlTests\Table\TableRowTest.cs" />
-    <Compile Include="ControlTests\Table\TableTest.cs" />
-    <Compile Include="ControlTests\TabTest.cs" />
-    <Compile Include="ControlTests\TreeItems\TreeNodeTest.cs" />
-    <Compile Include="ControlTests\TreeItems\TreeTest.cs" />
-    <Compile Include="ControlTests\VScrollBarTest.cs" />
-    <Compile Include="ControlTests\LabelTest.cs" />
-    <Compile Include="ControlTests\ListControls\ListBoxTests.cs" />
-    <Compile Include="ControlTests\ListControls\ListViewTest.cs" />
+    <Compile Include="ControlTests\ColorTests.cs" />
+    <Compile Include="ControlTests\CustomUIItemTests.cs" />
+    <Compile Include="ControlTests\GroupBoxTests.cs" />
+    <Compile Include="ControlTests\HyperlinkTests.cs" />
+    <Compile Include="ControlTests\HScrollBarTests.cs" />
+    <Compile Include="ControlTests\ImageTests.cs" />
+    <Compile Include="ControlTests\InputControls\RadioButtonTests.cs" />
+    <Compile Include="ControlTests\InputControls\SpinnerTests.cs" />
+    <Compile Include="ControlTests\InputControls\TristateItemTests.cs" />
+    <Compile Include="ControlTests\ListControls\CheckedListBoxTests.cs" />
+    <Compile Include="ControlTests\ListControls\ListBoxWithScrollBarTests.cs" />
+    <Compile Include="ControlTests\ListControls\ListViewTests.cs" />
+    <Compile Include="ControlTests\MenuItems\MenuTests.cs" />
+    <Compile Include="ControlTests\MenuItems\PopUpMenuTests.cs" />
+    <Compile Include="ControlTests\PropertyGridTests.cs" />
+    <Compile Include="ControlTests\SliderTests.cs" />
+    <Compile Include="ControlTests\Table\TableCellTests.cs" />
+    <Compile Include="ControlTests\Table\TableRowsTests.cs" />
+    <Compile Include="ControlTests\Table\TableRowTests.cs" />
+    <Compile Include="ControlTests\Table\TableTests.cs" />
+    <Compile Include="ControlTests\TabTests.cs" />
+    <Compile Include="ControlTests\TreeItems\TreeNodeTests.cs" />
+    <Compile Include="ControlTests\TreeItems\TreeTests.cs" />
+    <Compile Include="ControlTests\VScrollBarTests.cs" />
+    <Compile Include="ControlTests\LabelTests.cs" />
     <Compile Include="ControlTests\MyDateUIItem.cs" />
     <Compile Include="ControlTests\MyDateUIItemWithoutMappingDefined.cs" />
-    <Compile Include="ControlTests\PanelTest.cs" />
-    <Compile Include="ControlTests\ProgressBarTest.cs" />
-    <Compile Include="ControlTests\WindowStripControls\StatusBarTest.cs" />
-    <Compile Include="ControlTests\WindowStripControls\StatusStripTest.cs" />
-    <Compile Include="GenericScreenTypeTest.cs" />
+    <Compile Include="ControlTests\PanelTests.cs" />
+    <Compile Include="ControlTests\ProgressBarTests.cs" />
+    <Compile Include="ControlTests\WindowStripControls\StatusBarTests.cs" />
+    <Compile Include="ControlTests\WindowStripControls\StatusStripTests.cs" />
+    <Compile Include="GenericScreenTypeTests.cs" />
     <Compile Include="Reporting\One.cs" />
-    <Compile Include="Reporting\SessionReportTest.cs" />
-    <Compile Include="Reporting\SubFlowsTest.cs" />
-    <Compile Include="Reporting\SubFlowTest.cs" />
+    <Compile Include="Reporting\SessionReportTests.cs" />
+    <Compile Include="Reporting\SubFlowsTests.cs" />
+    <Compile Include="Reporting\SubFlowTests.cs" />
     <Compile Include="Reporting\Two.cs" />
-    <Compile Include="Repository\RepositoryTests.cs" />
-    <Compile Include="Repository\WorkSessionTest.cs" />
+    <Compile Include="Repository\WorkSessionTests.cs" />
     <Compile Include="Screens\MainScreen.cs" />
-    <Compile Include="MessageBoxTest.cs" />
-    <Compile Include="ModalWindowTest.cs" />
-    <Compile Include="NativeWindowTest.cs" />
+    <Compile Include="MessageBoxTests.cs" />
+    <Compile Include="ModalWindowTests.cs" />
+    <Compile Include="NativeWindowTests.cs" />
+    <Compile Include="WhiteUITestBase.cs" />
     <Compile Include="WindowTests.cs" />
-    <Compile Include="AutomationElementSearch\RawAutomationElementFinderTest.cs" />
-    <Compile Include="ControlTests\ButtonTest.cs" />
-    <Compile Include="ControlTests\HotKeyTest.cs" />
-    <Compile Include="ControlTests\InputControls\CheckboxTest.cs" />
-    <Compile Include="ControlTests\ListControls\CheckedListBoxTest.cs" />
-    <Compile Include="ControlTests\InputControls\PasswordTextBoxTest.cs" />
-    <Compile Include="ControlTests\InputControls\TextBoxTest.cs" />
+    <Compile Include="AutomationElementSearch\RawAutomationElementFinderTests.cs" />
+    <Compile Include="ControlTests\ButtonTests.cs" />
+    <Compile Include="ControlTests\HotKeyTests.cs" />
+    <Compile Include="ControlTests\InputControls\CheckboxTests.cs" />
+    <Compile Include="ControlTests\InputControls\PasswordTextBoxTests.cs" />
+    <Compile Include="ControlTests\InputControls\TextBoxTests.cs" />
     <Compile Include="ControlTests\TooltipTests.cs" />
     <Compile Include="ControlTests\UIItemTests.cs" />
     <Compile Include="ControlTests\ListControls\ComboBoxTests.cs" />
@@ -111,25 +111,24 @@
     <Compile Include="ControlTests\ListControls\EditableComboBoxTests.cs" />
     <Compile Include="ControlTests\DataGridTests.cs" />
     <Compile Include="ControlTests\InputControls\DatePickerTests.cs" />
-    <Compile Include="ControlTests\Splitters\HorizontalThumbTest.cs" />
-    <Compile Include="ControlTests\Splitters\VerticalThumbTest.cs" />
-    <Compile Include="Factory\InitializeOptionTest.cs" />
+    <Compile Include="ControlTests\Splitters\HorizontalThumbTests.cs" />
+    <Compile Include="ControlTests\Splitters\VerticalThumbTests.cs" />
+    <Compile Include="Factory\InitializeOptionTests.cs" />
     <Compile Include="Infrastructure\SilverlightTestConfiguration.cs" />
     <Compile Include="Infrastructure\WindowsConfiguration.cs" />
-    <Compile Include="InputDevices\AttachedKeyboardTest.cs" />
+    <Compile Include="InputDevices\AttachedKeyboardTests.cs" />
     <Compile Include="InputDevices\DragAndDropTests.cs" />
-    <Compile Include="InputDevices\KeyboardTest.cs" />
-    <Compile Include="InputDevices\MouseTest.cs" />
-    <Compile Include="Interceptors\DisabledControlsTest.cs" />
-    <Compile Include="Interceptors\ScrollInterceptorTest.cs" />
+    <Compile Include="InputDevices\KeyboardTests.cs" />
+    <Compile Include="InputDevices\MouseTests.cs" />
+    <Compile Include="Interceptors\DisabledControlsTests.cs" />
+    <Compile Include="Interceptors\ScrollInterceptorTests.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Infrastructure\TestConfiguration.cs" />
     <Compile Include="Infrastructure\TestConfigurationFactory.cs" />
-    <Compile Include="Scenarios\GetMultipleTest.cs" />
+    <Compile Include="Scenarios\GetMultipleTests.cs" />
     <Compile Include="Scenarios\Win32Tests.cs" />
     <Compile Include="TestFailedException.cs" />
-    <Compile Include="UIA\AutomationElementXTest.cs" />
-    <Compile Include="WhiteTestBase.cs" />
+    <Compile Include="UIA\AutomationElementXTests.cs" />
     <Compile Include="Infrastructure\WinformsTestConfiguration.cs" />
     <Compile Include="Infrastructure\WpfTestConfiguration.cs" />
   </ItemGroup>
@@ -168,9 +167,10 @@
       <Name>TestStack.White</Name>
     </ProjectReference>
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
@@ -178,4 +178,5 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
+
diff --git a/src/TestStack.White.UITests/UIA/AutomationElementXTest.cs b/src/TestStack.White.UITests/UIA/AutomationElementXTest.cs
deleted file mode 100644
index 0305b6be..00000000
--- a/src/TestStack.White.UITests/UIA/AutomationElementXTest.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System.Collections.Generic;
-using TestStack.White.UIA;
-using TestStack.White.UIItems;
-using Xunit;
-
-namespace TestStack.White.UITests.UIA
-{
-    public class AutomationElementXTest : WhiteTestBase
-    {
-        public void TestToString(string frameworkid)
-        {
-            var button = MainWindow.Get<Button>("ButtonWithTooltip");
-            string s = button.AutomationElement.Display();
-            Assert.Equal(string.Format("AutomationId:ButtonWithTooltip, Name:Button with Tooltip, ControlType:button, FrameworkId:{0}", frameworkid), s);
-        }
-
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(()=>TestToString(framework.FrameworkId()));
-        }
-
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
-        {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/UIA/AutomationElementXTests.cs b/src/TestStack.White.UITests/UIA/AutomationElementXTests.cs
new file mode 100644
index 00000000..add153c4
--- /dev/null
+++ b/src/TestStack.White.UITests/UIA/AutomationElementXTests.cs
@@ -0,0 +1,25 @@
+using NUnit.Framework;
+using System;
+using System.Windows.Automation;
+using TestStack.White.UIA;
+using TestStack.White.UIItems;
+
+namespace TestStack.White.UITests.UIA
+{
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class AutomationElementXTests : WhiteUITestBase
+    {
+        public AutomationElementXTests(WindowsFramework framework)
+            : base(framework)
+        { }
+
+        [Test]
+        public void ToStringTest()
+        {
+            var button = MainWindow.Get<Button>("ButtonWithTooltip");
+            var display = button.AutomationElement.Display();
+            Assert.That(display, Is.EqualTo(String.Format("AutomationId:ButtonWithTooltip, Name:Button with Tooltip, ControlType:{0}, FrameworkId:{1}", ControlType.Button.LocalizedControlType, FrameworkId)));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/WhiteTestBase.cs b/src/TestStack.White.UITests/WhiteUITestBase.cs
similarity index 53%
rename from src/TestStack.White.UITests/WhiteTestBase.cs
rename to src/TestStack.White.UITests/WhiteUITestBase.cs
index a95b92a5..1ca429ed 100644
--- a/src/TestStack.White.UITests/WhiteTestBase.cs
+++ b/src/TestStack.White.UITests/WhiteUITestBase.cs
@@ -1,10 +1,11 @@
-﻿using System;
+﻿using Castle.Core.Logging;
+using NUnit.Framework;
+using NUnit.Framework.Interfaces;
+using System;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Drawing.Imaging;
 using System.IO;
-using System.Linq;
-using Castle.Core.Logging;
 using TestStack.White.Configuration;
 using TestStack.White.InputDevices;
 using TestStack.White.ScreenObjects;
@@ -12,89 +13,70 @@
 using TestStack.White.UIItems.WindowItems;
 using TestStack.White.UITests.Infrastructure;
 using TestStack.White.UITests.Screens;
-using Xunit;
 
 namespace TestStack.White.UITests
 {
-    public abstract class WhiteTestBase
+    public abstract class WhiteUITestBase
     {
-        readonly ILogger logger = CoreAppXmlConfiguration.Instance.LoggerFactory.Create(typeof(WhiteTestBase));
-        readonly List<Window> windowsToClose = new List<Window>();
-        readonly string screenshotDir;
-        WindowsFramework? currentFramework;
+        protected WindowsFramework Framework { get; private set; }
+        private IDisposable mainWindow;
 
-        internal Keyboard Keyboard;
+        protected WhiteUITestBase(WindowsFramework framework)
+        {
+            Framework = framework;
+            CoreAppXmlConfiguration.Instance.LoggerFactory = new ConsoleFactory(LoggerLevel.Debug);
+            screenshotDir = @"c:\FailedTestsScreenshots";
+            Directory.CreateDirectory(screenshotDir);
+        }
+
+        [OneTimeSetUp]
+        public void BaseSetup()
+        {
+            mainWindow = SetMainWindow(Framework);
+        }
+
+        [OneTimeTearDown]
+        public void BaseTeardown()
+        {
+            mainWindow.Dispose();
+        }
 
-        protected WhiteTestBase()
+        [TearDown]
+        public void BaseTestTeardown()
         {
-            screenshotDir = "c:\\FailedTestsScreenshots";
-            if (!Directory.Exists(screenshotDir))
-                Directory.CreateDirectory(screenshotDir);
+            if (TestContext.CurrentContext.Result.Outcome.Status == TestStatus.Failed)
+            {
+                TakeScreenshot(TestContext.CurrentContext.Test.FullName);
+            }
         }
 
+        readonly ILogger logger = CoreAppXmlConfiguration.Instance.LoggerFactory.Create(typeof(WhiteUITestBase));
+        readonly List<Window> windowsToClose = new List<Window>();
+        readonly string screenshotDir;
+
+        internal Keyboard Keyboard;
+
         protected Window MainWindow { get; private set; }
         protected MainScreen MainScreen { get; private set; }
         protected Application Application { get; private set; }
         protected ScreenRepository Repository { get; private set; }
 
-        [Fact]
-        public void Automate()
+        private string TakeScreenshot(string screenshotName)
         {
-            CoreAppXmlConfiguration.Instance.LoggerFactory = new ConsoleFactory(LoggerLevel.Debug);
-            var frameworksToRun = SupportedFrameworks();
-
-            foreach (var framework in frameworksToRun)
+            var imagename = screenshotName + ".png";
+            var imagePath = Path.Combine(screenshotDir, imagename);
+            try
             {
-                currentFramework = framework;
-                using (SetMainWindow(framework))
-                {
-                    try
-                    {
-                        ExecuteTestRun(framework);
-                    }
-                    catch (TestFailedException)
-                    {
-                        throw;
-                    }
-                    catch (Exception ex)
-                    {
-                        throw new TestFailedException(string.Format("Failed to run test for {0}", framework), ex);
-                    }
-                }
+                new ScreenCapture().CaptureScreenShot().Save(imagePath, ImageFormat.Png);
+                Trace.WriteLine(String.Format("Screenshot taken: {0}", imagePath));
             }
-            currentFramework = null;
-        }
-
-        protected void RunTest(Action testAction, params WindowsFramework[] runFor)
-        {
-            if (!runFor.Any() || runFor.Any(r => r == currentFramework))
+            catch (Exception)
             {
-                try
-                {
-                    testAction();
-                }
-                catch (Exception ex)
-                {
-                    string path2 = string.Empty;
-                    try
-                    {
-                        path2 = testAction.Method.Name + ".png";
-                        var filename = Path.Combine(screenshotDir, path2);
-                        new ScreenCapture().CaptureScreenShot().Save(filename, ImageFormat.Png);
-                        Trace.WriteLine(string.Format("Screenshot taken: {0}", filename));
-                    }
-                    catch (Exception)
-                    {
-                        Trace.TraceError(string.Format("Failed to save screenshot to directory: {0}, filename: {1}", screenshotDir, path2));
-                    }
-                    throw new TestFailedException(string.Format("Failed to run {0} for {1}. Details:\r\n\r\n{2}", 
-                        testAction.Method.Name, currentFramework, ex), ex);
-                }
+                Trace.TraceError(String.Format("Failed to save screenshot to directory: {0}, filename: {1}", screenshotDir, imagePath));
             }
+            return imagePath;
         }
 
-        protected abstract void ExecuteTestRun(WindowsFramework framework);
-
         private IDisposable SetMainWindow(WindowsFramework framework)
         {
             try
@@ -117,20 +99,11 @@ private IDisposable SetMainWindow(WindowsFramework framework)
             }
         }
 
-        protected abstract IEnumerable<WindowsFramework> SupportedFrameworks();
-
-        protected IEnumerable<WindowsFramework> AllFrameworks()
-        {
-            yield return WindowsFramework.Wpf;
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Silverlight;
-        }
-
         private class ShutdownApplicationDisposable : IDisposable
         {
-            private readonly WhiteTestBase testBase;
+            private readonly WhiteUITestBase testBase;
 
-            public ShutdownApplicationDisposable(WhiteTestBase testBase)
+            public ShutdownApplicationDisposable(WhiteUITestBase testBase)
             {
                 this.testBase = testBase;
             }
@@ -139,12 +112,18 @@ public void Dispose()
             {
                 foreach (var window in testBase.windowsToClose)
                 {
-                    if (!window.IsClosed)
+                    if (window != null && !window.IsClosed)
                         window.Close();
                 }
                 testBase.windowsToClose.Clear();
-                testBase.MainWindow.Close();
-                testBase.Application.Dispose();
+                if (testBase.MainWindow != null)
+                {
+                    testBase.MainWindow.Close();
+                }
+                if (testBase.Application != null)
+                {
+                    testBase.Application.Dispose();
+                }
                 testBase.Application = null;
                 testBase.MainWindow = null;
             }
@@ -158,6 +137,12 @@ protected Window StartScenario(string scenarioButtonId, string windowTitle)
             return window;
         }
 
+        protected void Restart()
+        {
+            mainWindow.Dispose();
+            mainWindow = SetMainWindow(Framework);
+        }
+
         protected void SelectOtherControls()
         {
             MainWindow.Tabs[0].SelectTabPage(2);
@@ -182,5 +167,16 @@ protected void SelectPropertyGridTab()
         {
             MainWindow.Tabs[0].SelectTabPage(4);
         }
+
+        protected string FrameworkId
+        {
+            get
+            {
+                var type = Framework.GetType();
+                var memInfo = type.GetMember(Framework.ToString());
+                var attributes = memInfo[0].GetCustomAttributes(typeof(FrameworkIdAttribute), false);
+                return ((FrameworkIdAttribute)attributes[0]).FrameworkId;
+            }
+        }
     }
-}
\ No newline at end of file
+}
diff --git a/src/TestStack.White.UITests/WindowTests.cs b/src/TestStack.White.UITests/WindowTests.cs
index 6439839f..9891852f 100644
--- a/src/TestStack.White.UITests/WindowTests.cs
+++ b/src/TestStack.White.UITests/WindowTests.cs
@@ -1,82 +1,81 @@
-using System.Collections.Generic;
+using System;
+using NUnit.Framework;
 using System.Diagnostics;
 using System.Linq;
+using System.Windows.Automation;
 using TestStack.White.Configuration;
 using TestStack.White.Factory;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.Finders;
 using TestStack.White.UIItems.WindowItems;
-using Xunit;
 
 namespace TestStack.White.UITests
 {
-    public class WindowTests : WhiteTestBase
+    [TestFixture(WindowsFramework.WinForms)]
+    [TestFixture(WindowsFramework.Wpf)]
+    public class WindowTests : WhiteUITestBase
     {
-        protected override void ExecuteTestRun(WindowsFramework framework)
-        {
-            RunTest(GetAllWindows);
-            RunTest(FindWindow);
-            RunTest(WindowWithoutTitleBar, WindowsFramework.WinForms);
-            RunTest(WindowWithAmerstand, WindowsFramework.WinForms);
-            RunTest(IsCurrentlyActive);
-            RunTest(IsCurrentlyNotActive);
-            RunTest(HasAttachedMouse);
-            RunTest(FindNonExistentItem);
-            RunTest(GetAll);
-            RunTest(FindTabs);
-            RunTest(FindControlsInsideAPanel);
-            RunTest(SetWindowState);
-            RunTest(HandleDynamicallyAddedControls);
-            RunTest(GetTitle);
-            RunTest(ItemsWithin);
-            RunTest(WindowScrollsToMakeItemVisibleBeforePerformingAnyAction);
-            RunTest(FindToolBarsWhenThereAreMultiple);
-            RunTest(HandlesInvisibleControlsWinforms, WindowsFramework.WinForms);
-            RunTest(HandlesInvisibleControlsWpf, WindowsFramework.Wpf);
-            RunTest(IsClosed);
-            RunTest(CanFindTitleBar);
-        }
-
-        void GetAllWindows()
+        public WindowTests(WindowsFramework framework)
+            : base(framework)
+        {
+        }
+
+        [Test]
+        public void GetAllWindowsTest()
         {
             using (StartScenario("GetMultipleButton", "GetMultiple"))
             {
-                Assert.Equal(2, Application.GetWindows().Count);
+                Assert.That(Application.GetWindows(), Has.Count.EqualTo(2));
             }
         }
 
-        void FindWindow()
+        [Test]
+        public void FindWindowTest()
         {
             using (StartScenario("GetMultipleButton", "GetMultiple"))
             {
-                Window foundWindow = Application.Find(obj => obj.StartsWith("GetMul"), InitializeOption.NoCache);
-                Assert.NotNull(foundWindow);
+                var foundWindow = Application.Find(obj => obj.StartsWith("GetMul"), InitializeOption.NoCache);
+                Assert.That(foundWindow, Is.Not.Null);
             }
         }
 
-        void WindowWithoutTitleBar()
+        [Test]
+        public void WindowWithoutTitleBarTest()
         {
+            if (Framework != WindowsFramework.WinForms)
+            {
+                Assert.Ignore();
+            }
             using (var window = StartScenario("OpenWindowWithNoTitleBar", "WindowWithNoTitleBar"))
             {
-                Assert.NotNull(window);
+                Assert.That(window, Is.Not.Null);
             }
         }
 
-        void WindowWithAmerstand()
+        [Test]
+        public void WindowWithAmerstandTest()
         {
+            if (Framework != WindowsFramework.WinForms)
+            {
+                Assert.Ignore();
+            }
             using (var window = StartScenario("OpenWindowWithAmperstand", "WindowWithAmperstand&1"))
-                Assert.NotNull(window);
+            {
+                Assert.That(window, Is.Not.Null);
+            }
         }
 
-        void IsCurrentlyActive()
+        [Test]
+        public void IsCurrentlyActiveTest()
         {
             MainWindow.Focus();
-            Assert.True(MainWindow.IsCurrentlyActive);
+            Assert.That(MainWindow.IsCurrentlyActive, Is.True);
             MainWindow.Get<Button>("ButtonWithTooltip").Click();
-            Assert.True(MainWindow.IsCurrentlyActive);
+            Assert.That(MainWindow.IsCurrentlyActive, Is.True);
         }
 
-        void IsCurrentlyNotActive()
+        [Test]
+        public void IsCurrentlyNotActiveTest()
         {
             const string exeSourceFile = @"C:\Windows\system32\calc.exe";
             var psi = new ProcessStartInfo(exeSourceFile);
@@ -85,150 +84,173 @@ void IsCurrentlyNotActive()
             using (var mainWindow = application.GetWindow(SearchCriteria.ByText("Calculator"), InitializeOption.NoCache))
             {
                 mainWindow.Focus();
-                Assert.Equal(false, MainWindow.IsCurrentlyActive);
+                Assert.That(MainWindow.IsCurrentlyActive, Is.False);
             }
         }
 
-        void HandlesInvisibleControlsWinforms()
+        [Test]
+        public void HandlesInvisibleControlsWinformsTest()
         {
+            if (Framework != WindowsFramework.WinForms)
+            {
+                Assert.Ignore();
+            }
             using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.BusyTimeout = 100))
             {
-                var exception = Assert.Throws<AutomationException>(() => MainWindow.Get<TextBox>("HiddenTextBox"));
-                Assert.Equal("Failed to get (ControlType=edit or ControlType=document),AutomationId=HiddenTextBox",
-                    exception.Message);
+                Assert.That(() => { MainWindow.Get<TextBox>("HiddenTextBox"); },
+                    Throws.TypeOf<AutomationException>().With.Message.EqualTo(
+                        String.Format("Failed to get (ControlType={0} or ControlType={1}),AutomationId=HiddenTextBox",
+                            ControlType.Edit.LocalizedControlType, ControlType.Document.LocalizedControlType)));
             }
 
             MainWindow.Get<Button>("ShowHiddenTextBox").Click();
             var textBox = MainWindow.Get<TextBox>("HiddenTextBox");
-            Assert.True(textBox.Visible);
+            Assert.That(textBox.Visible, Is.True);
         }
 
-        void HandlesInvisibleControlsWpf()
+        [Test]
+        public void HandlesInvisibleControlsWpfTest()
         {
+            if (Framework != WindowsFramework.Wpf)
+            {
+                Assert.Ignore();
+            }
             var textBox = MainWindow.Get<TextBox>("HiddenTextBox");
-            Assert.False(textBox.Visible);
+            Assert.That(textBox.Visible, Is.False);
             MainWindow.Get<Button>("ShowHiddenTextBox").Click();
-            Assert.True(textBox.Visible);
+            Assert.That(textBox.Visible, Is.True);
         }
 
-        void FindToolBarsWhenThereAreMultiple()
+        [Test]
+        public void FindToolBarsWhenThereAreMultipleTest()
         {
-            Assert.NotEqual(null, MainWindow.GetToolStrip("ToolStrip1"));
-            Assert.NotEqual(null, MainWindow.GetToolStrip("ToolStrip2"));
+            Assert.That(MainWindow.GetToolStrip("ToolStrip1"), Is.Not.Null);
+            Assert.That(MainWindow.GetToolStrip("ToolStrip2"), Is.Not.Null);
             using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.BusyTimeout = 100))
             {
-                var exception = Assert.Throws<AutomationException>(() => MainWindow.GetToolStrip("ToolStrip3"));
-                Assert.Equal("Failed to get AutomationId=ToolStrip3", exception.Message);
+                Assert.That(() => { MainWindow.GetToolStrip("ToolStrip3"); },
+                    Throws.TypeOf<AutomationException>().With.Message.EqualTo(
+                        "Failed to get AutomationId=ToolStrip3"));
             }
         }
 
-        void WindowScrollsToMakeItemVisibleBeforePerformingAnyAction()
+        [Test]
+        public void WindowScrollsToMakeItemVisibleBeforePerformingAnyActionTest()
         {
             using (var window = StartScenario("OpenWindowWithScrollbars", "WindowWithScrollbars"))
             {
                 var button = window.Get<Button>("HiddenButton");
                 button.Click();
-                Assert.Equal("HiddenButtonClicked", button.HelpText);
+                Assert.That(button.HelpText, Is.EqualTo("HiddenButtonClicked"));
                 var buttonUpTop = window.Get<Button>("ButtonBackUpTop");
                 buttonUpTop.Click();
-                Assert.Equal("ButtonBackUpTopClicked", buttonUpTop.HelpText);
+                Assert.That(buttonUpTop.HelpText, Is.EqualTo("ButtonBackUpTopClicked"));
             }
         }
 
-        void ItemsWithin()
+        [Test]
+        public void ItemsWithinTest()
         {
             var groupBox = MainWindow.Get<GroupBox>("ScenariosPane");
-            List<UIItem> uiItems = MainWindow.ItemsWithin(groupBox);
-            Assert.True(uiItems.Count > 1, "Scenarios should have more than 1 button");
-            Assert.True(uiItems.OfType<Button>().Count() > 1, "Scenarios should have more than 1 button");
+            var uiItems = MainWindow.ItemsWithin(groupBox);
+            Assert.That(uiItems, Has.Count.GreaterThan(1), "Scenarios should have more than 1 button");
+            Assert.That(uiItems.OfType<Button>().ToList(), Has.Count.GreaterThan(1), "Scenarios should have more than 1 button");
         }
 
-        void GetTitle()
+        [Test]
+        public void GetTitleTest()
         {
-            Assert.NotNull(MainWindow.Title);
+            Assert.That(MainWindow.Title, Is.Not.Null);
         }
 
-        void HandleDynamicallyAddedControls()
+        [Test]
+        public void HandleDynamicallyAddedControlsTest()
         {
             SelectOtherControls();
             using (CoreAppXmlConfiguration.Instance.ApplyTemporarySetting(c => c.BusyTimeout = 100))
-                Assert.Throws<AutomationException>(() => MainWindow.Get<TextBox>("AddedTextBox"));
+            {
+                Assert.That(() => { MainWindow.Get<TextBox>("AddedTextBox"); },
+                    Throws.TypeOf<AutomationException>());
+            }
 
             MainWindow.Get<Button>("AddTextBox").Click();
-            Assert.NotEqual(null, MainWindow.Get<TextBox>("AddedTextBox"));
+            Assert.That(MainWindow.Get<TextBox>("AddedTextBox"), Is.Not.Null);
         }
 
-        void SetWindowState()
+        [Test]
+        public void SetWindowStateTest()
         {
             try
             {
                 MainWindow.DisplayState = DisplayState.Maximized;
-                Assert.Equal(DisplayState.Maximized, MainWindow.DisplayState);
+                Assert.That(MainWindow.DisplayState, Is.EqualTo(DisplayState.Maximized));
 
                 MainWindow.DisplayState = DisplayState.Restored;
-                Assert.Equal(DisplayState.Restored, MainWindow.DisplayState);
+                Assert.That(MainWindow.DisplayState, Is.EqualTo(DisplayState.Restored));
 
                 MainWindow.DisplayState = DisplayState.Minimized;
-                Assert.Equal(DisplayState.Minimized, MainWindow.DisplayState);
+                Assert.That(MainWindow.DisplayState, Is.EqualTo(DisplayState.Minimized));
             }
             finally
             {
-                MainWindow.DisplayState = DisplayState.Restored;                
+                MainWindow.DisplayState = DisplayState.Restored;
             }
         }
 
-        void FindControlsInsideAPanel()
+        [Test]
+        public void FindControlsInsideAPanelTest()
         {
             SelectOtherControls();
             var textBox = MainWindow.Get<TextBox>("TextBoxInsidePanel");
-            Assert.NotNull(textBox);
+            Assert.That(textBox, Is.Not.Null);
         }
 
-        void FindTabs()
+        [Test]
+        public void FindTabsTest()
         {
-            Assert.Equal(1, MainWindow.Tabs.Count);
+            Assert.That(MainWindow.Tabs, Has.Count.EqualTo(1));
         }
 
-        void GetAll()
+        [Test]
+        public void GetAllTest()
         {
-            Assert.NotEmpty(MainWindow.Items);
+            Assert.That(MainWindow.Items, Is.Not.Empty);
         }
 
-        void HasAttachedMouse()
+        [Test]
+        public void HasAttachedMouseTest()
         {
-            Assert.NotNull(MainWindow.Mouse);
+            Assert.That(MainWindow.Mouse, Is.Not.Null);
         }
 
-        void FindNonExistentItem()
+        [Test]
+        public void FindNonExistentItemTest()
         {
-            var excepion = Assert.Throws<AutomationException>(() => MainWindow.Get<TextBox>("DoesntExist"));
-            Assert.Contains("Failed to get", excepion.Message);
-            Assert.Contains("ControlType=edit", excepion.Message);
-            Assert.Contains("AutomationId=DoesntExist", excepion.Message);
+            Assert.That(() => { MainWindow.Get<TextBox>("DoesntExist"); },
+                Throws.TypeOf<AutomationException>().
+                    With.Message.Contains("Failed to get").
+                    And.Message.Contains(String.Format("ControlType={0}", ControlType.Edit.LocalizedControlType)).
+                    And.Message.Contains("AutomationId=DoesntExist"));
         }
 
-        void IsClosed()
+        [Test]
+        public void IsClosedTest()
         {
             MainWindow.Get<Button>("GetMultipleButton").Click();
             var window = MainWindow.ModalWindow("GetMultiple");
-            Assert.False(window.IsClosed);
+            Assert.That(window.IsClosed, Is.False);
             window.Close();
             window.WaitTill(() => window.IsClosed);
-            Assert.True(window.IsClosed);
-        }
-
-        void CanFindTitleBar()
-        {
-            TitleBar titleBar = MainWindow.TitleBar;
-            Assert.NotNull(titleBar.MinimizeButton);
-            Assert.NotNull(titleBar.MaximizeButton);
-            Assert.NotNull(titleBar.CloseButton);
+            Assert.That(window.IsClosed, Is.True);
         }
 
-        protected override IEnumerable<WindowsFramework> SupportedFrameworks()
+        [Test]
+        public void CanFindTitleBarTest()
         {
-            yield return WindowsFramework.WinForms;
-            yield return WindowsFramework.Wpf;
+            var titleBar = MainWindow.TitleBar;
+            Assert.That(titleBar.MinimizeButton, Is.Not.Null);
+            Assert.That(titleBar.MaximizeButton, Is.Not.Null);
+            Assert.That(titleBar.CloseButton, Is.Not.Null);
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UITests/packages.config b/src/TestStack.White.UITests/packages.config
index 3c0c3570..70a3f7c7 100644
--- a/src/TestStack.White.UITests/packages.config
+++ b/src/TestStack.White.UITests/packages.config
@@ -1,5 +1,5 @@
 ﻿<?xml version="1.0" encoding="utf-8"?>
 <packages>
   <package id="Castle.Core" version="3.3.0" targetFramework="net40" />
-  <package id="xunit" version="1.9.2" targetFramework="net40" />
+  <package id="NUnit" version="3.0.1" targetFramework="net40" />
 </packages>
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/AutomationElementSearch/AutomationSearchConditionFactoryTests.cs b/src/TestStack.White.UnitTests/AutomationElementSearch/AutomationSearchConditionFactoryTests.cs
new file mode 100644
index 00000000..4a5353d8
--- /dev/null
+++ b/src/TestStack.White.UnitTests/AutomationElementSearch/AutomationSearchConditionFactoryTests.cs
@@ -0,0 +1,28 @@
+using NUnit.Framework;
+using System.Windows.Automation;
+using TestStack.White.AutomationElementSearch;
+
+namespace TestStack.White.UnitTests.AutomationElementSearch
+{
+    [TestFixture]
+    public class AutomationSearchConditionFactoryTests
+    {
+        [Test]
+        public void GetWindowSearchConditionsWhenProcessIdIsValidTest()
+        {
+            var conditions = new AutomationSearchConditionFactory().GetWindowSearchConditions(1);
+            Assert.That(conditions, Has.Count.EqualTo(2));
+            Assert.That(conditions[0].Condition, Is.TypeOf<AndCondition>());
+            Assert.That(conditions[1].Condition, Is.TypeOf<AndCondition>());
+        }
+
+        [Test]
+        public void GetWindowSearchConditionsWhenProcessIdIsInvalidTest()
+        {
+            var conditions = new AutomationSearchConditionFactory().GetWindowSearchConditions(0);
+            Assert.That(conditions, Has.Count.EqualTo(2));
+            Assert.That(conditions[0].Condition, Is.TypeOf<PropertyCondition>());
+            Assert.That(conditions[1].Condition, Is.TypeOf<PropertyCondition>());
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/AutomationElementSearch/ElementSearchResultTests.cs b/src/TestStack.White.UnitTests/AutomationElementSearch/ElementSearchResultTests.cs
new file mode 100644
index 00000000..9db6e6a7
--- /dev/null
+++ b/src/TestStack.White.UnitTests/AutomationElementSearch/ElementSearchResultTests.cs
@@ -0,0 +1,28 @@
+using NUnit.Framework;
+using System.Windows.Automation;
+using TestStack.White.AutomationElementSearch;
+
+namespace TestStack.White.UnitTests.AutomationElementSearch
+{
+    [TestFixture]
+    public class ElementSearchResultTests
+    {
+        [Test]
+        public void AllResultsFoundForManyTest()
+        {
+            var result = ElementSearchResult.ForMany();
+            Assert.That(result.AllResultsFound, Is.False);
+            result.Add(AutomationElement.FocusedElement);
+            Assert.That(result.AllResultsFound, Is.False);
+        }
+
+        [Test]
+        public void AllResultsFoundForOneTest()
+        {
+            var result = ElementSearchResult.ForOne();
+            Assert.That(result.AllResultsFound, Is.False);
+            result.Add(AutomationElement.FocusedElement);
+            Assert.That(result.AllResultsFound, Is.True);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/AutomationElementSearch/SearchConditionTests.cs b/src/TestStack.White.UnitTests/AutomationElementSearch/SearchConditionTests.cs
new file mode 100644
index 00000000..d4fe2b47
--- /dev/null
+++ b/src/TestStack.White.UnitTests/AutomationElementSearch/SearchConditionTests.cs
@@ -0,0 +1,26 @@
+using NUnit.Framework;
+using TestStack.White.AutomationElementSearch;
+using TestStack.White.UIItems.Finders;
+
+namespace TestStack.White.UnitTests.AutomationElementSearch
+{
+    [TestFixture]
+    public class SearchConditionTests
+    {
+        [Test]
+        public void TestToString()
+        {
+            const string name = "blah";
+            string str = AutomationSearchCondition.ByName(name).ToString();
+            Assert.That(str, Does.Contain(name));
+        }
+
+        [Test]
+        public void EqualsTests()
+        {
+            Assert.That(SearchConditionFactory.CreateForAutomationId("foo"), Is.EqualTo(SearchConditionFactory.CreateForAutomationId("foo")));
+            Assert.That(SearchConditionFactory.CreateForAutomationId("foo"), Is.Not.EqualTo(SearchConditionFactory.CreateForAutomationId("foo1")));
+            Assert.That(SearchConditionFactory.CreateForAutomationId("foo"), Is.Not.EqualTo(SearchConditionFactory.CreateForName(("foo"))));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/Configuration/UIItemIdAppXmlConfigurationTest.cs b/src/TestStack.White.UnitTests/Configuration/UIItemIdAppXmlConfigurationTest.cs
deleted file mode 100644
index 02407844..00000000
--- a/src/TestStack.White.UnitTests/Configuration/UIItemIdAppXmlConfigurationTest.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using TestStack.White.Configuration;
-using Xunit;
-
-namespace TestStack.White.UnitTests.Configuration
-{
-    public class UIItemIdAppXmlConfigurationTest
-    {
-        [Fact]
-        public void DefaultValues()
-        {
-            Assert.Equal("Vertical Scroll Bar", UIItemIdAppXmlConfiguration.Instance.TableVerticalScrollBar);
-            Assert.Equal("Horizontal Scroll Bar", UIItemIdAppXmlConfiguration.Instance.TableHorizontalScrollBar);
-            Assert.Equal("Row ", UIItemIdAppXmlConfiguration.Instance.TableColumn);
-            Assert.Equal("Top Left Header Cell", UIItemIdAppXmlConfiguration.Instance.TableTopLeftHeaderCell);
-            Assert.Equal("(null)", UIItemIdAppXmlConfiguration.Instance.TableCellNullValue);
-            Assert.Equal("Top Row", UIItemIdAppXmlConfiguration.Instance.TableHeader);
-            Assert.Equal("Horizontal ScrollBar", UIItemIdAppXmlConfiguration.Instance.HorizontalScrollBar);
-            Assert.Equal("Vertical ScrollBar", UIItemIdAppXmlConfiguration.Instance.VerticalScrollBar);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/CoreProjectTest.cs b/src/TestStack.White.UnitTests/CoreProjectTest.cs
index a30a5532..31fa95c6 100644
--- a/src/TestStack.White.UnitTests/CoreProjectTest.cs
+++ b/src/TestStack.White.UnitTests/CoreProjectTest.cs
@@ -1,3 +1,4 @@
+using NUnit.Framework;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -7,13 +8,13 @@
 using TestStack.White.SystemExtensions;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.Finders;
-using Xunit;
 
 namespace TestStack.White.UnitTests
 {
+    [TestFixture]
     public class CoreProjectTest
     {
-        [Fact]
+        [Test]
         public void AllMethodsAreVirtual()
         {
             var virtuals = typeof(UIItem).Assembly.GetTypes()
@@ -32,7 +33,7 @@ public void AllMethodsAreVirtual()
                 string.Join("\r\n", virtuals));
         }
 
-        [Fact]
+        [Test]
         public void AllMethodsAreVirtualInRepositoryCodeBase()
         {
             var virtuals = typeof(ScreenRepository).Assembly.GetTypes()
@@ -51,7 +52,7 @@ public void AllMethodsAreVirtualInRepositoryCodeBase()
                     string.Join("\r\n", virtuals));
         }
 
-        [Fact]
+        [Test]
         public void AllMethodsAreVirtualInReportingCodeBase()
         {
             var virtuals = typeof(IReport).Assembly.GetTypes()
@@ -70,7 +71,7 @@ public void AllMethodsAreVirtualInReportingCodeBase()
                     string.Join("\r\n", virtuals));
         }
 
-        [Fact]
+        [Test]
         public void AllUIItemsHaveDefaultConstructor()
         {
             var collection = new List<string>();
@@ -92,7 +93,7 @@ private void AllSubsclassesHaveEmptyConstructor(List<string> collection, Type ty
             });
             foreach (var subClass in classes)
             {
-                bool hasDefaultConstructor = false;
+                var hasDefaultConstructor = false;
                 foreach (var constructorInfo in subClass.GetConstructors(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly))
                 {
                     if (constructorInfo.GetParameters().Length == 0 || subClass.Name.Equals(typeof(ToggleableItem).Name))
diff --git a/src/TestStack.White.UnitTests/Drawing/DrawingPointXTests.cs b/src/TestStack.White.UnitTests/Drawing/DrawingPointXTests.cs
new file mode 100644
index 00000000..aa3acaaa
--- /dev/null
+++ b/src/TestStack.White.UnitTests/Drawing/DrawingPointXTests.cs
@@ -0,0 +1,19 @@
+using NUnit.Framework;
+using System.Drawing;
+using TestStack.White.Drawing;
+
+namespace TestStack.White.UnitTests.Drawing
+{
+    [TestFixture]
+    public class DrawingPointXTests
+    {
+        [Test]
+        public void ConvertToWindowsPointTest()
+        {
+            var point = new Point(10, 10);
+            System.Windows.Point winPoint = point.ConvertToWindowsPoint();
+            Assert.That(winPoint.X, Is.EqualTo(10));
+            Assert.That(winPoint.Y, Is.EqualTo(10));
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/Mappings/ControlDictionaryTests.cs b/src/TestStack.White.UnitTests/Mappings/ControlDictionaryTests.cs
new file mode 100644
index 00000000..6236ee4b
--- /dev/null
+++ b/src/TestStack.White.UnitTests/Mappings/ControlDictionaryTests.cs
@@ -0,0 +1,122 @@
+using NUnit.Framework;
+using System.Linq;
+using System.Windows.Automation;
+using TestStack.White.Mappings;
+using TestStack.White.UIItems;
+using TestStack.White.UIItems.ListBoxItems;
+using TestStack.White.UIItems.PropertyGridItems;
+using TestStack.White.UIItems.WindowStripControls;
+
+namespace TestStack.White.UnitTests.Mappings
+{
+    [TestFixture]
+    public class ControlDictionaryTests
+    {
+        private ControlDictionary controlDictionary;
+
+        [OneTimeSetUp]
+        public void Setup()
+        {
+            controlDictionary = ControlDictionary.Instance;
+        }
+
+        [Test]
+        public void PrimaryControlTypesTest()
+        {
+            Assert.That(controlDictionary.PrimaryControlTypes(WindowsFramework.WinForms.FrameworkId()).Count > 23, Is.True);
+        }
+
+        [Test]
+        public void IsPrimaryControlTest()
+        {
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.Custom, "CustomItem", null), Is.True);
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.Button, string.Empty, null), Is.True);
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.Menu, string.Empty, null), Is.True);
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.Pane, "fsdfhsdfjSysDateTimePick32ffdgdg", null), Is.True);
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.Pane, "fsdfhsdfj", null), Is.True);
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.Tab, "fsdfhsdfj", null), Is.True);
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.TabItem, "fsdfhsdfj", null), Is.False);
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.Group, null, null), Is.True);
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.Image, "WindowsForms10.Window.8.app.0.33c0d9d", null), Is.True);
+            Assert.That(controlDictionary.IsPrimaryControl(ControlType.Pane, "WindowsForms10.Window.8.app.0.33c0d9d", "PropertyGrid"), Is.True);
+        }
+
+        [Test]
+        public void HasPrimaryChildrenTest()
+        {
+            Assert.That(controlDictionary.HasPrimaryChildren(ControlType.Tab), Is.True);
+            Assert.That(controlDictionary.HasPrimaryChildren(ControlType.TabItem), Is.True);
+            Assert.That(controlDictionary.HasPrimaryChildren(ControlType.Pane), Is.True);
+            Assert.That(controlDictionary.HasPrimaryChildren(ControlType.Button), Is.False);
+            Assert.That(controlDictionary.HasPrimaryChildren(ControlType.Custom), Is.True);
+            Assert.That(controlDictionary.HasPrimaryChildren(ControlType.Group), Is.True);
+        }
+
+        [Test]
+        public void GetControlTypeTest()
+        {
+            Assert.That(controlDictionary.GetControlType(typeof(DateTimePicker), WindowsFramework.WinForms.FrameworkId()).Single(), Is.EqualTo(ControlType.Pane));
+            Assert.That(controlDictionary.GetControlType(typeof(Button), WindowsFramework.Wpf.FrameworkId()), Has.Some.EqualTo(ControlType.Button));
+            Assert.That(controlDictionary.GetControlType(typeof(Button), WindowsFramework.Wpf.FrameworkId()), Has.Some.EqualTo(ControlType.CheckBox));
+            Assert.That(controlDictionary.GetControlType(typeof(GroupBox), WindowsFramework.Wpf.FrameworkId()).Single(), Is.EqualTo(ControlType.Group));
+            Assert.That(controlDictionary.GetControlType(typeof(Panel), WindowsFramework.Wpf.FrameworkId()).Single(), Is.EqualTo(ControlType.Pane));
+        }
+
+        [Test]
+        public void GetControlTypeForAFrameworkTest()
+        {
+            Assert.That(controlDictionary.GetControlType(typeof(TextBox), WindowsFramework.Wpf.FrameworkId()), Has.Some.EqualTo(ControlType.Edit));
+            Assert.That(controlDictionary.GetControlType(typeof(TextBox), WindowsFramework.Wpf.FrameworkId()).Single(), Is.EqualTo(ControlType.Edit));
+            Assert.That(controlDictionary.GetControlType(typeof(MenuBar), WindowsFramework.Wpf.FrameworkId()).Single(), Is.EqualTo(ControlType.Menu));
+            Assert.That(controlDictionary.GetControlType(typeof(MenuBar), WindowsFramework.WinForms.FrameworkId()).Single(), Is.EqualTo(ControlType.MenuBar));
+        }
+
+        [Test]
+        public void IsControlTypeSupportedTest()
+        {
+            Assert.That(controlDictionary.IsControlTypeSupported(ControlType.Separator), Is.False);
+            Assert.That(controlDictionary.IsControlTypeSupported(ControlType.Button), Is.True);
+            Assert.That(controlDictionary.IsControlTypeSupported(ControlType.Group), Is.True);
+            Assert.That(controlDictionary.IsControlTypeSupported(ControlType.Pane), Is.True);
+        }
+
+        [Test]
+        public void GetTestControlTypeTest()
+        {
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.Button, WindowsFramework.WinForms.FrameworkId(), true), Is.EqualTo(typeof(Button)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.Button, WindowsFramework.Wpf.FrameworkId(), false), Is.EqualTo(typeof(Button)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.ComboBox, WindowsFramework.WinForms.FrameworkId(), true), Is.EqualTo(typeof(WinFormComboBox)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.ComboBox, WindowsFramework.Wpf.FrameworkId(), false), Is.EqualTo(typeof(WPFComboBox)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.ComboBox, WindowsFramework.Silverlight.FrameworkId(), false), Is.EqualTo(typeof(SilverlightComboBox)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.Text, WindowsFramework.Silverlight.FrameworkId(), false), Is.EqualTo(typeof(WPFLabel)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.Group, WindowsFramework.Wpf.FrameworkId(), false), Is.EqualTo(typeof(GroupBox)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.Image, WindowsFramework.Win32.FrameworkId(), true), Is.EqualTo(typeof(Image)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.Button, WindowsFramework.None.FrameworkId(), false), Is.EqualTo(typeof(Button)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.Button, WindowsFramework.None.FrameworkId(), true), Is.EqualTo(typeof(Button)));
+            Assert.That(() => { controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.ComboBox, WindowsFramework.None.FrameworkId(), false); }, Throws.TypeOf<ControlDictionaryException>());
+            Assert.That(() => { controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.ComboBox, WindowsFramework.None.FrameworkId(), true); }, Throws.TypeOf<ControlDictionaryException>());
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.Button, WindowsFramework.Silverlight.FrameworkId(), true), Is.EqualTo(typeof(Button)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.Edit, WindowsFramework.Silverlight.FrameworkId(), true), Is.EqualTo(typeof(TextBox)));
+            Assert.That(controlDictionary.GetTestControlType("SysDateTimePick32", string.Empty, ControlType.Pane, WindowsFramework.WinForms.FrameworkId(), true), Is.EqualTo(typeof(DateTimePicker)));
+            Assert.That(controlDictionary.GetTestControlType("Winforms.SysDateTimePick32.ad8aa", string.Empty, ControlType.Pane, WindowsFramework.WinForms.FrameworkId(), true), Is.EqualTo(typeof(DateTimePicker)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.ListItem, string.Empty, false), Is.EqualTo(typeof(Win32ListItem)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.ListItem, WindowsFramework.WinForms.FrameworkId(), false), Is.EqualTo(typeof(Win32ListItem)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, string.Empty, ControlType.ListItem, WindowsFramework.Wpf.FrameworkId(), false), Is.EqualTo(typeof(WPFListItem)));
+        }
+
+        [Test]
+        public void GetTestTypeTest()
+        {
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, "foo", ControlType.Button, WindowsFramework.WinForms.FrameworkId(), false), Is.EqualTo(typeof(Button)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, "foo", ControlType.Pane, WindowsFramework.WinForms.FrameworkId(), false), Is.EqualTo(typeof(Panel)));
+            Assert.That(controlDictionary.GetTestControlType(string.Empty, "PropertyGrid", ControlType.Pane, WindowsFramework.WinForms.FrameworkId(), false), Is.EqualTo(typeof(PropertyGrid)));
+        }
+
+        [Test]
+        public void ControlTypeCanChangeBasedOnFrameworkTest()
+        {
+            Assert.That(controlDictionary.GetControlType(typeof(DateTimePicker), WindowsFramework.WinForms.FrameworkId()).Single().ProgrammaticName, Is.EqualTo(ControlType.Pane.ProgrammaticName));
+            Assert.That(controlDictionary.GetControlType(typeof(DateTimePicker), WindowsFramework.Wpf.FrameworkId()).Single().ProgrammaticName, Is.EqualTo(ControlType.Custom.ProgrammaticName));
+        }
+    }
+}
diff --git a/src/TestStack.White.UnitTests/Repository/EntityMapping/EntitiesTest.cs b/src/TestStack.White.UnitTests/Repository/EntityMapping/EntitiesTest.cs
index e84f0ce6..cbefc081 100644
--- a/src/TestStack.White.UnitTests/Repository/EntityMapping/EntitiesTest.cs
+++ b/src/TestStack.White.UnitTests/Repository/EntityMapping/EntitiesTest.cs
@@ -1,13 +1,15 @@
+using NUnit.Framework;
 using System.Collections.Generic;
 using System.Text;
 using TestStack.White.ScreenObjects.EntityMapping;
-using Xunit;
 
 namespace TestStack.White.UnitTests.Repository.EntityMapping
 {
+    [TestFixture]
     public class EntitiesTest
     {
-        [Fact(Skip = "No idea what this is doing")]
+        [Test]
+        [Ignore("No idea what this is doing")]
         public void To_String()
         {
             var list = new Entities<Entity>();
@@ -19,18 +21,19 @@ public void To_String()
             var builder = new StringBuilder();
             builder.AppendLine("ZO, YO, ");
             builder.AppendLine("8, 7, ");
-            Assert.Equal(builder.ToString(), list.ToString());
+            Assert.That(list.ToString(), Is.EqualTo(builder.ToString()));
         }
 
-        [Fact(Skip = "No idea what this is doing")]
+        [Test]
+        [Ignore("No idea what this is doing")]
         public void Construction()
         {
-            var data = new List<string[]> {new[] {"1", "2"}, new[] {"3", "4"}};
-            var entities = new Entities<TestEntity>(new[] {"ZO", "YO"}, data);
-            Assert.Equal("1", entities[0].Zo);
-            Assert.Equal("2", entities[0].NestedEntity.Yo);
-            Assert.Equal("3", entities[1].Zo);
-            Assert.Equal("4", entities[1].NestedEntity.Yo);
+            var data = new List<string[]> { new[] { "1", "2" }, new[] { "3", "4" } };
+            var entities = new Entities<TestEntity>(new[] { "ZO", "YO" }, data);
+            Assert.That(entities[0].Zo, Is.EqualTo("1"));
+            Assert.That(entities[0].NestedEntity.Yo, Is.EqualTo("2"));
+            Assert.That(entities[1].Zo, Is.EqualTo("3"));
+            Assert.That(entities[1].NestedEntity.Yo, Is.EqualTo("4"));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/Repository/EntityMapping/EntityTest.cs b/src/TestStack.White.UnitTests/Repository/EntityMapping/EntityTest.cs
index 39a7488b..c5fed9db 100644
--- a/src/TestStack.White.UnitTests/Repository/EntityMapping/EntityTest.cs
+++ b/src/TestStack.White.UnitTests/Repository/EntityMapping/EntityTest.cs
@@ -1,50 +1,50 @@
+using NUnit.Framework;
 using TestStack.White.ScreenObjects.EntityMapping;
-using Xunit;
 
 namespace TestStack.White.UnitTests.Repository.EntityMapping
 {
+    [TestFixture]
     public class EntityTest
     {
-        [Fact]
+        [Test]
         public void SetFieldValue()
         {
             var testEntity = new TestEntity(new NestedEntity());
             testEntity.Field("yo").SetValue("5");
-            Assert.Equal("5", testEntity.NestedEntity.Yo);
-
-            Assert.Equal(null, testEntity.Field("bo"));
+            Assert.That(testEntity.NestedEntity.Yo, Is.EqualTo("5"));
+            Assert.That(testEntity.Field("bo"), Is.EqualTo(null));
         }
 
-        [Fact]
+        [Test]
         public void Should_Format_To_Field()
         {
-            Assert.Equal("one_two", Entity.HeaderFormatter.To_Field_Name("One Two"));
-            Assert.Equal("two_or_one", Entity.HeaderFormatter.To_Field_Name("Two /One"));
-            Assert.Equal("two_or_one_three", Entity.HeaderFormatter.To_Field_Name("Two / One Three"));
+            Assert.That(Entity.HeaderFormatter.To_Field_Name("One Two"), Is.EqualTo("one_two"));
+            Assert.That(Entity.HeaderFormatter.To_Field_Name("Two /One"), Is.EqualTo("two_or_one"));
+            Assert.That(Entity.HeaderFormatter.To_Field_Name("Two / One Three"), Is.EqualTo("two_or_one_three"));
         }
 
-        [Fact]
+        [Test]
         public void Should_Format_To_Header_Column()
         {
-            Assert.Equal("ONE TWO", Entity.HeaderFormatter.To_Header_Column("one_two"));
-            Assert.Equal("TWO/ONE", Entity.HeaderFormatter.To_Header_Column("two_or_one"));
-            Assert.Equal("TWO/ONE THREE", Entity.HeaderFormatter.To_Header_Column("two_or_one_three"));
+            Assert.That(Entity.HeaderFormatter.To_Header_Column("one_two"), Is.EqualTo("ONE TWO"));
+            Assert.That(Entity.HeaderFormatter.To_Header_Column("two_or_one"), Is.EqualTo("TWO/ONE"));
+            Assert.That(Entity.HeaderFormatter.To_Header_Column("two_or_one_three"), Is.EqualTo("TWO/ONE THREE"));
         }
 
-        [Fact]
+        [Test]
         public void To_String()
         {
             var nestedEntity = new NestedEntity {Yo = "7"};
             var testEntity = new TestEntity(nestedEntity) {Zo = "8"};
-            Assert.Equal("zo=8, nestedEntity=yo=7, ", testEntity.ToString());
+            Assert.That(testEntity.ToString(), Is.EqualTo("zo=8, nestedEntity=yo=7, "));
         }
 
-        [Fact]
+        [Test]
         public void Header()
         {
             var nestedEntity = new NestedEntity();
             var testEntity = new TestEntity(nestedEntity);
-            Assert.Equal("ZO, YO, ", testEntity.Header);
+            Assert.That(testEntity.Header, Is.EqualTo("ZO, YO, "));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/Repository/EntityMapping/NestedEntitiesTest.cs b/src/TestStack.White.UnitTests/Repository/EntityMapping/NestedEntitiesTest.cs
index d4c09f6a..f0c3bb7e 100644
--- a/src/TestStack.White.UnitTests/Repository/EntityMapping/NestedEntitiesTest.cs
+++ b/src/TestStack.White.UnitTests/Repository/EntityMapping/NestedEntitiesTest.cs
@@ -1,15 +1,16 @@
+using NUnit.Framework;
 using TestStack.White.ScreenObjects.EntityMapping;
-using Xunit;
 
 namespace TestStack.White.UnitTests.Repository.EntityMapping
 {
+    [TestFixture]
     public class NestedEntitiesTest
     {
-        [Fact]
+        [Test]
         public void Create()
         {
             var testEntity = new TestEntity(new NestedEntity());
-            Assert.Equal(2, new NestedEntities(testEntity).Count);
+            Assert.That(new NestedEntities(testEntity), Has.Count.EqualTo(2));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/Repository/RepositoryCodebaseTest.cs b/src/TestStack.White.UnitTests/Repository/RepositoryCodebaseTest.cs
index e9ff61fc..e5041278 100644
--- a/src/TestStack.White.UnitTests/Repository/RepositoryCodebaseTest.cs
+++ b/src/TestStack.White.UnitTests/Repository/RepositoryCodebaseTest.cs
@@ -1,14 +1,15 @@
+using NUnit.Framework;
 using System;
 using System.Linq;
 using TestStack.White.ScreenObjects;
 using TestStack.White.SystemExtensions;
-using Xunit;
 
 namespace TestStack.White.UnitTests.Repository
 {
+    [TestFixture]
     public class RepositoryCodebaseTest
     {
-        [Fact]
+        [Test]
         public void AllMethodsAreVirtual()
         {
             var virtuals = typeof(ScreenRepository).Assembly.GetTypes()
diff --git a/src/TestStack.White.UnitTests/Repository/ScreenClassTest.cs b/src/TestStack.White.UnitTests/Repository/ScreenClassTest.cs
index 443bf895..29058fd0 100644
--- a/src/TestStack.White.UnitTests/Repository/ScreenClassTest.cs
+++ b/src/TestStack.White.UnitTests/Repository/ScreenClassTest.cs
@@ -1,13 +1,14 @@
 using NSubstitute;
+using NUnit.Framework;
 using TestStack.White.ScreenObjects;
 using TestStack.White.UIItems.WindowItems;
-using Xunit;
 
 namespace TestStack.White.UnitTests.Repository
 {
+    [TestFixture]
     public class ScreenClassTest
     {
-        [Fact]
+        [Test]
         public void NewScreenContainingComponent()
         {
             var window = Substitute.For<Window>();
diff --git a/src/TestStack.White.UnitTests/Repository/ScreenRepositoryCacheTest.cs b/src/TestStack.White.UnitTests/Repository/ScreenRepositoryCacheTest.cs
index dfd8368c..d1731293 100644
--- a/src/TestStack.White.UnitTests/Repository/ScreenRepositoryCacheTest.cs
+++ b/src/TestStack.White.UnitTests/Repository/ScreenRepositoryCacheTest.cs
@@ -1,14 +1,15 @@
 using NSubstitute;
+using NUnit.Framework;
 using TestStack.White.Factory;
 using TestStack.White.ScreenObjects;
 using TestStack.White.Sessions;
-using Xunit;
 
 namespace TestStack.White.UnitTests.Repository
 {
+    [TestFixture]
     public class ScreenRepositoryCacheTest
     {
-        [Fact]
+        [Test]
         public void ScreensShouldBeCached()
         {
             var application = Substitute.For<Application>();
@@ -19,10 +20,10 @@ public void ScreensShouldBeCached()
             applicationSession.Application.Returns(application);
 
             var screenRepository = new ScreenRepository(applicationSession);
-            Assert.Same(GetScreen(screenRepository), GetScreen(screenRepository));
+            Assert.That(GetScreen(screenRepository), Is.SameAs(GetScreen(screenRepository)));
         }
 
-        [Fact]
+        [Test]
         public void ScreenShouldRemovedFromCacheWhenClosed()
         {
             var application = Substitute.For<Application>();
@@ -35,14 +36,14 @@ public void ScreenShouldRemovedFromCacheWhenClosed()
             applicationSession.Application.Returns(application);
 
             var screenRepository = new ScreenRepository(applicationSession);
-            DummyScreen screen = GetScreen(screenRepository);
-            Assert.Same(screen, GetScreen(screenRepository));
+            var screen = GetScreen(screenRepository);
+            Assert.That(GetScreen(screenRepository), Is.SameAs(screen));
             screen.Close();
             GetScreen(screenRepository);
             application.ReceivedWithAnyArgs(2).GetWindow("dummy", InitializeOption.NoCache);
         }
 
-        [Fact]
+        [Test]
         public void ScreenCachingWithMatches()
         {
             var application = Substitute.For<Application>();
@@ -54,14 +55,16 @@ public void ScreenCachingWithMatches()
             applicationSession.Application.Returns(application);
 
             var screenRepository = new ScreenRepository(applicationSession);
-            Assert.Same(FindScreen(screenRepository), FindScreen(screenRepository));
+            Assert.That(FindScreen(screenRepository), Is.SameAs(FindScreen(screenRepository)));
         }
 
-        private static DummyScreen FindScreen(ScreenRepository screenRepository) {
+        private static DummyScreen FindScreen(ScreenRepository screenRepository)
+        {
             return screenRepository.Get<DummyScreen>(t => true, InitializeOption.NoCache);
         }
 
-        private static DummyScreen GetScreen(ScreenRepository screenRepository) {
+        private static DummyScreen GetScreen(ScreenRepository screenRepository)
+        {
             return screenRepository.Get<DummyScreen>("dummy", InitializeOption.NoCache);
         }
     }
diff --git a/src/TestStack.White.UnitTests/Repository/Services/ServiceCallTest.cs b/src/TestStack.White.UnitTests/Repository/Services/ServiceCallTest.cs
index dcc2de24..e56178b6 100644
--- a/src/TestStack.White.UnitTests/Repository/Services/ServiceCallTest.cs
+++ b/src/TestStack.White.UnitTests/Repository/Services/ServiceCallTest.cs
@@ -1,16 +1,17 @@
+using NUnit.Framework;
 using TestStack.White.ScreenObjects.Services;
-using Xunit;
 
 namespace TestStack.White.UnitTests.Repository.Services
 {
+    [TestFixture]
     public class ServiceCallTest
     {
-        [Fact]
+        [Test]
         public void ShouldStoreParameterTypeOfMethod()
         {
             var type = typeof(TestServiceForServiceCallTest);
             var serviceCall = new ServiceCall(new TestServiceForServiceCallTest(), type.GetMethod("Method"));
-            Assert.Equal("System.String", serviceCall.ParameterTypes[0]);
+            Assert.That(serviceCall.ParameterTypes[0], Is.EqualTo("System.String"));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/Repository/Services/ServiceExecutionTest.cs b/src/TestStack.White.UnitTests/Repository/Services/ServiceExecutionTest.cs
index b20e63da..d7854bd0 100644
--- a/src/TestStack.White.UnitTests/Repository/Services/ServiceExecutionTest.cs
+++ b/src/TestStack.White.UnitTests/Repository/Services/ServiceExecutionTest.cs
@@ -1,42 +1,44 @@
+using NUnit.Framework;
 using System;
 using TestStack.White.ScreenObjects.Services;
-using Xunit;
 
 namespace TestStack.White.UnitTests.Repository.Services
 {
+    [TestFixture]
     public class ServiceExecutionTest
     {
-        private readonly ServiceExecution serviceExecution;
-        private readonly ExecutionHistory executionHistory;
-        private readonly Type type;
+        private ServiceExecution serviceExecution;
+        private ExecutionHistory executionHistory;
+        private Type type;
 
-        public ServiceExecutionTest()
+        [SetUp]
+        public void Setup()
         {
             type = typeof(TestService);
             executionHistory = new ExecutionHistory();
             serviceExecution = new ServiceExecution(executionHistory, new NullWorkEnvironment());
         }
 
-        [Fact]
+        [Test]
         public void InvokingANewServiceShouldAddItToEventHistory()
         {
-            LastServiceCallStatus callStatus = serviceExecution.Invoking(new TestService(), type.GetMethod("Method"));
+            var callStatus = serviceExecution.Invoking(new TestService(), type.GetMethod("Method"));
             serviceExecution.Invoked(null);
-            Assert.Equal(1, executionHistory.ServiceCalls.Count);
-            Assert.Equal(false, callStatus.WasExecuted);
+            Assert.That(executionHistory.ServiceCalls, Has.Count.EqualTo(1));
+            Assert.That(callStatus.WasExecuted, Is.False);
         }
 
-        [Fact]
+        [Test]
         public void InvokingAExistingServiceShouldReturnStatus()
         {
             var callInPreviousRun = new ServiceCall(new TestService(), type.GetMethod("Method"));
             executionHistory.Add(callInPreviousRun);
             callInPreviousRun.ReturnValue = string.Empty;
 
-            LastServiceCallStatus callStatus = serviceExecution.Invoking(new TestService(), type.GetMethod("Method"));
-            Assert.Equal(1, executionHistory.ServiceCalls.Count);
-            Assert.NotEqual(null, callStatus);
-            Assert.NotEqual(null, callStatus.ReturnValue);
+            var callStatus = serviceExecution.Invoking(new TestService(), type.GetMethod("Method"));
+            Assert.That(executionHistory.ServiceCalls, Has.Count.EqualTo(1));
+            Assert.That(callStatus, Is.Not.Null);
+            Assert.That(callStatus.ReturnValue, Is.Not.Null);
         }
     }
 
diff --git a/src/TestStack.White.UnitTests/ScreenMap/WindowItemsMapTest.cs b/src/TestStack.White.UnitTests/ScreenMap/WindowItemsMapTest.cs
index d68c5dc4..e5a4a69a 100644
--- a/src/TestStack.White.UnitTests/ScreenMap/WindowItemsMapTest.cs
+++ b/src/TestStack.White.UnitTests/ScreenMap/WindowItemsMapTest.cs
@@ -1,13 +1,14 @@
+using NUnit.Framework;
 using System.IO;
 using System.Windows;
 using TestStack.White.Factory;
 using TestStack.White.ScreenMap;
 using TestStack.White.UIA;
 using TestStack.White.UIItems.Finders;
-using Xunit;
 
 namespace TestStack.White.UnitTests.ScreenMap
 {
+    [TestFixture]
     public class WindowItemsMapTest
     {
         public WindowItemsMapTest()
@@ -15,59 +16,58 @@ public WindowItemsMapTest()
             File.Delete("foo.xml");
         }
 
-        [Fact]
+        [Test]
         public void ReplaceExistingLocationIfExists()
         {
-            WindowItemsMap windowItemsMap = WindowItemsMap.Create(InitializeOption(), RectX.UnlikelyWindowPosition);
+            var windowItemsMap = WindowItemsMap.Create(InitializeOption(), RectX.UnlikelyWindowPosition);
             windowItemsMap.Add(new Point(1, 1), SearchCriteria.ByAutomationId("foo"));
             var newPoint = new Point(1, 2);
             windowItemsMap.Add(newPoint, SearchCriteria.ByAutomationId("foo"));
-            Assert.Equal(1, windowItemsMap.UIItemLocations.Count);
-            Assert.Equal(newPoint, windowItemsMap.UIItemLocations[0].Point);
+            Assert.That(windowItemsMap.UIItemLocations, Has.Count.EqualTo(1));
+            Assert.That(windowItemsMap.UIItemLocations[0].Point, Is.EqualTo(newPoint));
         }
 
         private InitializeOption InitializeOption()
         {
-            return global::TestStack.White.Factory.InitializeOption.NoCache.AndIdentifiedBy("foo");
+            return Factory.InitializeOption.NoCache.AndIdentifiedBy("foo");
         }
 
-        [Fact]
+        [Test]
         public void ReplaceExistingLocationWhenSearchCriteriaChangesForTheSamePoint()
         {
-            WindowItemsMap windowItemsMap = WindowItemsMap.Create(InitializeOption(), RectX.UnlikelyWindowPosition);
+            var windowItemsMap = WindowItemsMap.Create(InitializeOption(), RectX.UnlikelyWindowPosition);
             windowItemsMap.Add(new Point(1, 1), SearchCriteria.ByAutomationId("foo"));
             windowItemsMap.Add(new Point(1, 1), SearchCriteria.ByText("foo"));
-
-            Assert.Equal(1, windowItemsMap.UIItemLocations.Count);
+            Assert.That(windowItemsMap.UIItemLocations, Has.Count.EqualTo(1));
         }
 
-        [Fact]
+        [Test]
         public void GetItemLocationWhenNotPresent()
         {
-            WindowItemsMap windowItemsMap = WindowItemsMap.Create(InitializeOption(), RectX.UnlikelyWindowPosition);
-            Assert.Equal(RectX.UnlikelyWindowPosition, windowItemsMap.GetItemLocation(SearchCriteria.ByText("foo")));
+            var windowItemsMap = WindowItemsMap.Create(InitializeOption(), RectX.UnlikelyWindowPosition);
+            Assert.That(windowItemsMap.GetItemLocation(SearchCriteria.ByText("foo")), Is.EqualTo(RectX.UnlikelyWindowPosition));
         }
 
-        [Fact]
+        [Test]
         public void GetItemLocation()
         {
-            WindowItemsMap windowItemsMap = WindowItemsMap.Create(InitializeOption(), RectX.UnlikelyWindowPosition);
+            var windowItemsMap = WindowItemsMap.Create(InitializeOption(), RectX.UnlikelyWindowPosition);
             windowItemsMap.Add(new Point(1, 1), SearchCriteria.ByAutomationId("foo"));
-            Assert.Equal(new Point(1, 1), windowItemsMap.GetItemLocation(SearchCriteria.ByAutomationId("foo")));
+            Assert.That(windowItemsMap.GetItemLocation(SearchCriteria.ByAutomationId("foo")), Is.EqualTo(new Point(1, 1)));
         }
 
-        [Fact]
+        [Test]
         public void GetItemLocationWhenWindowPositionChanges()
         {
-            WindowItemsMap windowsItemsMap = WindowItemsMap.Create(InitializeOption(), new Point(20, 20));
+            var windowsItemsMap = WindowItemsMap.Create(InitializeOption(), new Point(20, 20));
             windowsItemsMap.Add(new Point(27, 27), SearchCriteria.ByAutomationId("foo"));
             windowsItemsMap.Save();
 
             windowsItemsMap = WindowItemsMap.Create(InitializeOption(), new Point(5, 5));
-            Assert.Equal(new Point(12, 12), windowsItemsMap.GetItemLocation(SearchCriteria.ByAutomationId("foo")));
+            Assert.That(windowsItemsMap.GetItemLocation(SearchCriteria.ByAutomationId("foo")), Is.EqualTo(new Point(12, 12)));
 
             windowsItemsMap.CurrentWindowPosition = new Point(10, 10);
-            Assert.Equal(new Point(17, 17), windowsItemsMap.GetItemLocation(SearchCriteria.ByAutomationId("foo")));
+            Assert.That(windowsItemsMap.GetItemLocation(SearchCriteria.ByAutomationId("foo")), Is.EqualTo(new Point(17, 17)));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/SpanTests.cs b/src/TestStack.White.UnitTests/SpanTests.cs
new file mode 100644
index 00000000..a920be5f
--- /dev/null
+++ b/src/TestStack.White.UnitTests/SpanTests.cs
@@ -0,0 +1,32 @@
+using NUnit.Framework;
+using System.Windows;
+
+namespace TestStack.White.UnitTests
+{
+    [TestFixture]
+    public class SpanTests
+    {
+        [Test]
+        public void UnionTest()
+        {
+            var verticalSpan = new VerticalSpan(new Rect(10, 10, 0, 10)).Union(new Rect(10, 5, 0, 10));
+            Assert.That(verticalSpan.DoesntContain(new Rect(10, 10, 0, 5)), Is.False);
+            Assert.That(verticalSpan.DoesntContain(new Rect(10, 10, 0, 10)), Is.False);
+        }
+
+        [Test]
+        public void CutTest()
+        {
+            var verticalSpan = new VerticalSpan(new Rect(10, 10, 10, 10)).Minus(new Rect(10, 15, 5, 5));
+            Assert.That(verticalSpan.DoesntContain(new Rect(10, 10, 10, 12)), Is.True);
+            Assert.That(verticalSpan.DoesntContain(new Rect(10, 10, 10, 4)), Is.False);
+        }
+
+        [Test]
+        public void EmptyIsOutsideTest()
+        {
+            var verticalSpan = new VerticalSpan(new Rect(10, 10, 10, 10));
+            Assert.That(verticalSpan.DoesntContain(Rect.Empty), Is.True);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/SystemExtensions/DoubleXTest.cs b/src/TestStack.White.UnitTests/SystemExtensions/DoubleXTest.cs
index ae04ffe8..d38ab454 100644
--- a/src/TestStack.White.UnitTests/SystemExtensions/DoubleXTest.cs
+++ b/src/TestStack.White.UnitTests/SystemExtensions/DoubleXTest.cs
@@ -1,17 +1,18 @@
+using NUnit.Framework;
 using TestStack.White.SystemExtensions;
-using Xunit;
 
 namespace TestStack.White.UnitTests.SystemExtensions
 {
+    [TestFixture]
     public class DoubleXTest
     {
-        [Fact]
+        [Test]
         public void IsInvalid()
         {
-            Assert.Equal(true, double.NegativeInfinity.IsInvalid());
-            Assert.Equal(true, double.PositiveInfinity.IsInvalid());
-            Assert.Equal(true, double.NaN.IsInvalid());
-            Assert.Equal(false, 0d.IsInvalid());
+            Assert.That(double.NegativeInfinity.IsInvalid(), Is.True);
+            Assert.That(double.PositiveInfinity.IsInvalid(), Is.True);
+            Assert.That(double.NaN.IsInvalid(), Is.True);
+            Assert.That(0d.IsInvalid(), Is.False);
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/TestStack.White.UnitTests.csproj b/src/TestStack.White.UnitTests/TestStack.White.UnitTests.csproj
index 7d495926..3da4e11d 100644
--- a/src/TestStack.White.UnitTests/TestStack.White.UnitTests.csproj
+++ b/src/TestStack.White.UnitTests/TestStack.White.UnitTests.csproj
@@ -37,7 +37,6 @@
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
@@ -59,34 +58,22 @@
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Castle.Core">
-      <HintPath>..\packages\Castle.Core.3.3.0\lib\net40-client\Castle.Core.dll</HintPath>
-    </Reference>
     <Reference Include="NSubstitute">
       <HintPath>..\packages\NSubstitute.1.7.2.0\lib\NET40\NSubstitute.dll</HintPath>
       <Private>True</Private>
     </Reference>
+    <Reference Include="nunit.framework, Version=3.0.5813.39032, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
+      <HintPath>..\packages\NUnit.3.0.1\lib\net40\nunit.framework.dll</HintPath>
+      <Private>True</Private>
+    </Reference>
     <Reference Include="PresentationFramework">
       <RequiredTargetFramework>3.0</RequiredTargetFramework>
     </Reference>
     <Reference Include="System" />
-    <Reference Include="System.configuration" />
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
     <Reference Include="System.Drawing" />
-    <Reference Include="System.Runtime.Serialization">
-      <RequiredTargetFramework>3.0</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
     <Reference Include="UIAutomationClient">
       <RequiredTargetFramework>3.0</RequiredTargetFramework>
     </Reference>
@@ -96,20 +83,15 @@
     <Reference Include="WindowsBase">
       <RequiredTargetFramework>3.0</RequiredTargetFramework>
     </Reference>
-    <Reference Include="xunit">
-      <HintPath>..\packages\xunit.1.9.2\lib\net20\xunit.dll</HintPath>
-    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="AutomationElementSearch\AutomationSearchConditionFactoryTest.cs" />
-    <Compile Include="AutomationElementSearch\ElementSearchResultTest.cs" />
-    <Compile Include="AutomationElementSearch\SearchConditionTest.cs" />
-    <Compile Include="Configuration\UIItemIdAppXmlConfigurationTest.cs" />
-    <Compile Include="ControlsActionTest.cs" />
+    <Compile Include="AutomationElementSearch\AutomationSearchConditionFactoryTests.cs" />
+    <Compile Include="AutomationElementSearch\ElementSearchResultTests.cs" />
+    <Compile Include="AutomationElementSearch\SearchConditionTests.cs" />
     <Compile Include="CoreProjectTest.cs" />
-    <Compile Include="Drawing\DrawingPointXTest.cs" />
-    <Compile Include="Mappings\ControlDictionaryTest.cs" />
+    <Compile Include="Drawing\DrawingPointXTests.cs" />
+    <Compile Include="Mappings\ControlDictionaryTests.cs" />
     <Compile Include="Repository\DummyScreen.cs" />
     <Compile Include="Repository\DummyWindow.cs" />
     <Compile Include="Repository\EntityMapping\Cricketer.cs" />
@@ -128,7 +110,7 @@
     <Compile Include="Repository\Services\ServiceExecutionTest.cs" />
     <Compile Include="Repository\Services\TestServiceForServiceCallTest.cs" />
     <Compile Include="ScreenMap\WindowItemsMapTest.cs" />
-    <Compile Include="SpanTest.cs" />
+    <Compile Include="SpanTests.cs" />
     <Compile Include="SystemExtensions\DoubleXTest.cs" />
     <Compile Include="UIA\RectXTest.cs" />
     <Compile Include="UIA\WindowsPointXTest.cs" />
@@ -144,10 +126,14 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="App.config" />
-    <None Include="packages.config" />
+    <None Include="packages.config">
+      <SubType>Designer</SubType>
+    </None>
     <None Include="white.snk" />
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
   <ItemGroup>
     <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
       <Visible>False</Visible>
@@ -175,7 +161,6 @@
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/TestStack.White.UnitTests/UIA/RectXTest.cs b/src/TestStack.White.UnitTests/UIA/RectXTest.cs
index ef2bcc01..006a9d72 100644
--- a/src/TestStack.White.UnitTests/UIA/RectXTest.cs
+++ b/src/TestStack.White.UnitTests/UIA/RectXTest.cs
@@ -1,53 +1,54 @@
 using System.Windows;
+using NUnit.Framework;
 using TestStack.White.UIA;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIA
 {
+    [TestFixture]
     public class RectXTest
     {
-        [Fact]
+        [Test]
         public void IsZero()
         {
-            Assert.Equal(true, new Rect(0, 0, 0, 0).IsZeroSize());
-            Assert.Equal(false, new Rect(0, 0, 1, 0).IsZeroSize());
+            Assert.That(new Rect(0, 0, 0, 0).IsZeroSize(), Is.True);
+            Assert.That(new Rect(0, 0, 1, 0).IsZeroSize(), Is.False);
         }
 
-        [Fact]
+        [Test]
         public void Center()
         {
-            Assert.Equal(new Point(15, 15), new Rect(10, 10, 10, 10).Center());
-            Assert.Equal(new Point(15, 5), new Rect(10, 0, 10, 10).Center());
+            Assert.That(new Rect(10, 10, 10, 10).Center(), Is.EqualTo(new Point(15, 15)));
+            Assert.That(new Rect(10, 0, 10, 10).Center(), Is.EqualTo(new Point(15, 5)));
         }
 
-        [Fact]
+        [Test]
         public void ImmediateExteriorEast()
         {
-            Assert.Equal(new Point(21, 15), new Rect(10, 10, 10, 10).ImmediateExteriorEast());
+            Assert.That(new Rect(10, 10, 10, 10).ImmediateExteriorEast(), Is.EqualTo(new Point(21, 15)));
         }
 
-        [Fact]
+        [Test]
         public void ImmediateInteriorEast()
         {
-            Assert.Equal(new Point(19, 15), new Rect(10, 10, 10, 10).ImmediateInteriorEast());
+            Assert.That(new Rect(10, 10, 10, 10).ImmediateInteriorEast(), Is.EqualTo(new Point(19, 15)));
         }
 
-        [Fact]
+        [Test]
         public void ImmediateExteriorWest()
         {
-            Assert.Equal(new Point(9, 15), new Rect(10, 10, 10, 10).ImmediateExteriorWest());
+            Assert.That(new Rect(10, 10, 10, 10).ImmediateExteriorWest(), Is.EqualTo(new Point(9, 15)));
         }
 
-        [Fact]
+        [Test]
         public void ImmediateInteriorNorth()
         {
-            Assert.Equal(new Rect(10, 10, 10, 10).ImmediateInteriorNorth(), new Point(15, 11));
+            Assert.That(new Point(15, 11), Is.EqualTo(new Rect(10, 10, 10, 10).ImmediateInteriorNorth()));
         }
 
-        [Fact]
+        [Test]
         public void ImmediateInteriorSouth()
         {
-            Assert.Equal(new Rect(10, 10, 10, 10).ImmediateInteriorSouth(), new Point(15, 19));
+            Assert.That(new Point(15, 19), Is.EqualTo(new Rect(10, 10, 10, 10).ImmediateInteriorSouth()));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/UIA/WindowsPointXTest.cs b/src/TestStack.White.UnitTests/UIA/WindowsPointXTest.cs
index 86584a98..fa12a513 100644
--- a/src/TestStack.White.UnitTests/UIA/WindowsPointXTest.cs
+++ b/src/TestStack.White.UnitTests/UIA/WindowsPointXTest.cs
@@ -1,27 +1,28 @@
 using System.Windows;
+using NUnit.Framework;
 using TestStack.White.UIA;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIA
 {
+    [TestFixture]
     public class WindowsPointXTest
     {
-        [Fact]
+        [Test]
         public void ConvertToDrawingPoint()
         {
-            System.Drawing.Point point = new Point(10, 10).ToDrawingPoint();
-            Assert.Equal(10, point.X);
-            Assert.Equal(10, point.Y);
+            var point = new Point(10, 10).ToDrawingPoint();
+            Assert.That(point.X, Is.EqualTo(10));
+            Assert.That(point.Y, Is.EqualTo(10));
         }
 
-        [Fact]
+        [Test]
         public void IsInvalid()
         {
-            Assert.Equal(true, new Point(double.PositiveInfinity, 0).IsInvalid());
-            Assert.Equal(true, new Point(double.NegativeInfinity, 0).IsInvalid());
-            Assert.Equal(true, new Point(0, double.PositiveInfinity).IsInvalid());
-            Assert.Equal(true, new Point(0, double.NegativeInfinity).IsInvalid());
-            Assert.Equal(false, new Point(0, 0).IsInvalid());
+            Assert.That(new Point(double.PositiveInfinity, 0).IsInvalid(), Is.True);
+            Assert.That(new Point(double.NegativeInfinity, 0).IsInvalid(), Is.True);
+            Assert.That(new Point(0, double.PositiveInfinity).IsInvalid(), Is.True);
+            Assert.That(new Point(0, double.NegativeInfinity).IsInvalid(), Is.True);
+            Assert.That(new Point(0, 0).IsInvalid(), Is.False);
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/UIItemEvents/UserActionTest.cs b/src/TestStack.White.UnitTests/UIItemEvents/UserActionTest.cs
index 50f897c6..b400a085 100644
--- a/src/TestStack.White.UnitTests/UIItemEvents/UserActionTest.cs
+++ b/src/TestStack.White.UnitTests/UIItemEvents/UserActionTest.cs
@@ -1,10 +1,11 @@
 using NSubstitute;
+using NUnit.Framework;
 using TestStack.White.UIItemEvents;
 using TestStack.White.UIItems;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIItemEvents
 {
+    [TestFixture]
     public class UserActionTest
     {
         private readonly UserAction userAction;
@@ -21,27 +22,27 @@ private static T UIItem<T>(string id) where T : class, IUIItem
             return t;
         }
 
-        [Fact]
+        [Test]
         public void IsNotRepeatEventWhenRegisteringFirstEvent()
         {
             userAction.Register(new UIItemClickEvent(UIItem<Button>("cb")));
-            Assert.Equal(false, userAction.RepeatEvent);
+            Assert.That(userAction.RepeatEvent, Is.False);
         }
 
-        [Fact]
+        [Test]
         public void IsNotRepeatEventWhenRegisteringDifferentEvent()
         {
             userAction.Register(new UIItemClickEvent(UIItem<Button>("cb")));
             userAction.Register(new UIItemClickEvent(UIItem<Button>("cb")));
-            Assert.Equal(false, userAction.RepeatEvent);
+            Assert.That(userAction.RepeatEvent, Is.False);
         }
 
-        [Fact]
+        [Test]
         public void RepeatEventWhenRegisteringSameEvent()
         {
             userAction.Register(new TextBoxEvent(UIItem<TextBox>("cb")));
             userAction.Register(new TextBoxEvent(UIItem<TextBox>("cb")));
-            Assert.Equal(true, userAction.RepeatEvent);
+            Assert.That(userAction.RepeatEvent, Is.True);
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/UIItems/DateFormatTest.cs b/src/TestStack.White.UnitTests/UIItems/DateFormatTest.cs
index bb6850f7..466b69d9 100644
--- a/src/TestStack.White.UnitTests/UIItems/DateFormatTest.cs
+++ b/src/TestStack.White.UnitTests/UIItems/DateFormatTest.cs
@@ -1,15 +1,16 @@
+using NUnit.Framework;
 using TestStack.White.UIItems;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIItems
 {
+    [TestFixture]
     public class DateFormatTest
     {
-        [Fact]
+        [Test]
         public void DifferentDateFormats()
         {
-            Assert.Equal(DateFormat.DayMonthYear, DateFormat.Create("-", "dd-MM-yyyy"));
-            Assert.Equal(DateFormat.DayMonthYear, DateFormat.Create("-", "d-M-yyyy"));
+            Assert.That(DateFormat.Create("-", "dd-MM-yyyy"), Is.EqualTo(DateFormat.DayMonthYear));
+            Assert.That(DateFormat.Create("-", "d-M-yyyy"), Is.EqualTo(DateFormat.DayMonthYear));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/UIItems/Finders/ControlTypeConditionTest.cs b/src/TestStack.White.UnitTests/UIItems/Finders/ControlTypeConditionTest.cs
index 24efa1af..542bf669 100644
--- a/src/TestStack.White.UnitTests/UIItems/Finders/ControlTypeConditionTest.cs
+++ b/src/TestStack.White.UnitTests/UIItems/Finders/ControlTypeConditionTest.cs
@@ -1,26 +1,26 @@
+using NUnit.Framework;
+using System;
 using System.Windows.Automation;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.Finders;
 using TestStack.White.UIItems.WindowStripControls;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIItems.Finders
 {
+    [TestFixture]
     public class ControlTypeConditionTest
     {
-        [Fact]
+        [Test]
         public void ControlTypeCondition()
         {
-            Assert.Equal(string.Format("(ControlType={0} or ControlType={1})",
-                ControlType.Button.LocalizedControlType,
-                ControlType.CheckBox.LocalizedControlType),
-                SearchConditionFactory.CreateForControlType(typeof (Button), WindowsFramework.Wpf).ToString());
-            Assert.Equal(string.Format("ControlType={0}", ControlType.Pane.LocalizedControlType),
-                SearchConditionFactory.CreateForControlType(typeof (TestCustomUIItem), WindowsFramework.Wpf).ToString());
-            Assert.Equal(string.Format("ControlType={0}", ControlType.MenuBar.LocalizedControlType),
-                SearchConditionFactory.CreateForControlType(typeof (MenuBar), WindowsFramework.WinForms).ToString());
-            Assert.Equal(string.Format("ControlType={0}", ControlType.Menu.LocalizedControlType),
-                SearchConditionFactory.CreateForControlType(typeof (MenuBar), WindowsFramework.Wpf).ToString());
+            Assert.That(SearchConditionFactory.CreateForControlType(typeof(Button), WindowsFramework.Wpf).ToString(),
+                Is.EqualTo(String.Format("(ControlType={0} or ControlType={1})", ControlType.Button.LocalizedControlType, ControlType.CheckBox.LocalizedControlType)));
+            Assert.That(SearchConditionFactory.CreateForControlType(typeof(TestCustomUIItem), WindowsFramework.Wpf).ToString(),
+                Is.EqualTo(String.Format("ControlType={0}", ControlType.Pane.LocalizedControlType)));
+            Assert.That(SearchConditionFactory.CreateForControlType(typeof(MenuBar), WindowsFramework.WinForms).ToString(),
+                Is.EqualTo(String.Format("ControlType={0}", ControlType.MenuBar.LocalizedControlType)));
+            Assert.That(SearchConditionFactory.CreateForControlType(typeof(MenuBar), WindowsFramework.Wpf).ToString(),
+                Is.EqualTo(String.Format("ControlType={0}", ControlType.Menu.LocalizedControlType)));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/UIItems/Finders/IndexConditionTest.cs b/src/TestStack.White.UnitTests/UIItems/Finders/IndexConditionTest.cs
index 82d5abce..19f41c2c 100644
--- a/src/TestStack.White.UnitTests/UIItems/Finders/IndexConditionTest.cs
+++ b/src/TestStack.White.UnitTests/UIItems/Finders/IndexConditionTest.cs
@@ -1,16 +1,17 @@
+using NUnit.Framework;
 using TestStack.White.UIItems.Finders;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIItems.Finders
 {
+    [TestFixture]
     public class IndexConditionTest
     {
-        [Fact]
+        [Test]
         public void TestEquals()
         {
-            Assert.Equal(new IndexCondition(1), new IndexCondition(1));
-            Assert.NotEqual(new IndexCondition(1), new IndexCondition(2));
-            Assert.Equal(new IndexCondition(-1), new IndexCondition(-1));
+            Assert.That(new IndexCondition(1), Is.EqualTo(new IndexCondition(1)));
+            Assert.That(new IndexCondition(1), Is.Not.EqualTo(new IndexCondition(2)));
+            Assert.That(new IndexCondition(-1), Is.EqualTo(new IndexCondition(-1)));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/UIItems/Finders/SearchConditionFactoryTest.cs b/src/TestStack.White.UnitTests/UIItems/Finders/SearchConditionFactoryTest.cs
index 21be5b99..12e50538 100644
--- a/src/TestStack.White.UnitTests/UIItems/Finders/SearchConditionFactoryTest.cs
+++ b/src/TestStack.White.UnitTests/UIItems/Finders/SearchConditionFactoryTest.cs
@@ -1,10 +1,11 @@
+using NUnit.Framework;
 using System.Windows;
 using System.Windows.Automation;
 using TestStack.White.UIItems.Finders;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIItems.Finders
 {
+    [TestFixture]
     public class SearchConditionFactoryTest
     {
         private readonly AutomationElement element;
@@ -14,13 +15,13 @@ public SearchConditionFactoryTest()
             element = AutomationElement.FromPoint(new Point(100, 100));
         }
 
-        [Fact]
+        [Test]
         public void Create()
         {
-            Assert.Equal(true, SearchConditionFactory.CreateForControlType(element.Current.ControlType).AppliesTo(element));
-            Assert.Equal(true, SearchConditionFactory.CreateForAutomationId(element.Current.AutomationId).AppliesTo(element));
-            Assert.Equal(true, SearchConditionFactory.CreateForFrameworkId(element.Current.FrameworkId).AppliesTo(element));
-            Assert.Equal(true, SearchConditionFactory.CreateForClassName(element.Current.ClassName).AppliesTo(element));
+            Assert.That(SearchConditionFactory.CreateForControlType(element.Current.ControlType).AppliesTo(element), Is.True);
+            Assert.That(SearchConditionFactory.CreateForAutomationId(element.Current.AutomationId).AppliesTo(element), Is.True);
+            Assert.That(SearchConditionFactory.CreateForFrameworkId(element.Current.FrameworkId).AppliesTo(element), Is.True);
+            Assert.That(SearchConditionFactory.CreateForClassName(element.Current.ClassName).AppliesTo(element), Is.True);
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/UIItems/Finders/SearchCriteriaTest.cs b/src/TestStack.White.UnitTests/UIItems/Finders/SearchCriteriaTest.cs
index 97a88cce..753f40e1 100644
--- a/src/TestStack.White.UnitTests/UIItems/Finders/SearchCriteriaTest.cs
+++ b/src/TestStack.White.UnitTests/UIItems/Finders/SearchCriteriaTest.cs
@@ -1,54 +1,55 @@
 using System.Windows.Automation;
+using NUnit.Framework;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.Finders;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIItems.Finders
 {
+    [TestFixture]
     public class SearchCriteriaTest
     {
-        [Fact]
+        [Test]
         public void IsIndexed()
         {
-            Assert.Equal(false, SearchCriteria.ByAutomationId("").IsIndexed);
-            Assert.Equal(true, SearchCriteria.Indexed(1).IsIndexed);
-            Assert.Equal(true, SearchCriteria.Indexed(0).IsIndexed);
+            Assert.That(SearchCriteria.ByAutomationId("").IsIndexed, Is.False);
+            Assert.That(SearchCriteria.Indexed(1).IsIndexed, Is.True);
+            Assert.That(SearchCriteria.Indexed(0).IsIndexed, Is.True);
         }
 
-        [Fact]
+        [Test]
         public void Merge()
         {
-            Assert.Equal(SearchCriteria.ByAutomationId("foo").Merge(SearchCriteria.ByControlType(ControlType.Button)),
-                            SearchCriteria.ByAutomationId("foo").AndControlType(ControlType.Button));
-            Assert.Equal(SearchCriteria.ByAutomationId("foo").Merge(SearchCriteria.ByControlType(ControlType.Button).NotIdentifiedByText("bar")),
-                            SearchCriteria.ByAutomationId("foo").AndControlType(ControlType.Button).NotIdentifiedByText("bar"));
+            Assert.That(SearchCriteria.ByAutomationId("foo").Merge(SearchCriteria.ByControlType(ControlType.Button)),
+                Is.EqualTo(SearchCriteria.ByAutomationId("foo").AndControlType(ControlType.Button)));
+            Assert.That(SearchCriteria.ByAutomationId("foo").Merge(SearchCriteria.ByControlType(ControlType.Button).NotIdentifiedByText("bar")),
+                Is.EqualTo(SearchCriteria.ByAutomationId("foo").AndControlType(ControlType.Button).NotIdentifiedByText("bar")));
         }
 
-        [Fact]
+        [Test]
         public void EqualsTests()
         {
-            Assert.Equal(SearchCriteria.ByAutomationId("foo"), SearchCriteria.ByAutomationId("foo"));
-            Assert.NotEqual(SearchCriteria.ByText("foo"), SearchCriteria.ByAutomationId("foo"));
-            Assert.Equal(SearchCriteria.ByFramework(WindowsFramework.Win32.FrameworkId()), SearchCriteria.ByFramework(WindowsFramework.Win32.FrameworkId()));
-            Assert.NotEqual(SearchCriteria.ByFramework(WindowsFramework.WinForms.FrameworkId()), SearchCriteria.ByFramework(WindowsFramework.Win32.FrameworkId()));
-            Assert.Equal(SearchCriteria.ByAutomationId("foo").AndByText("bar"), SearchCriteria.ByAutomationId("foo").AndByText("bar"));
-            Assert.Equal(SearchCriteria.ByText("bar").AndAutomationId("foo"), SearchCriteria.ByAutomationId("foo").AndByText("bar"));
+            Assert.That(SearchCriteria.ByAutomationId("foo"), Is.EqualTo(SearchCriteria.ByAutomationId("foo")));
+            Assert.That(SearchCriteria.ByText("foo"), Is.Not.EqualTo(SearchCriteria.ByAutomationId("foo")));
+            Assert.That(SearchCriteria.ByFramework(WindowsFramework.Win32.FrameworkId()), Is.EqualTo(SearchCriteria.ByFramework(WindowsFramework.Win32.FrameworkId())));
+            Assert.That(SearchCriteria.ByFramework(WindowsFramework.WinForms.FrameworkId()), Is.Not.EqualTo(SearchCriteria.ByFramework(WindowsFramework.Win32.FrameworkId())));
+            Assert.That(SearchCriteria.ByAutomationId("foo").AndByText("bar"), Is.EqualTo(SearchCriteria.ByAutomationId("foo").AndByText("bar")));
+            Assert.That(SearchCriteria.ByAutomationId("foo").AndByText("bar"), Is.EqualTo(SearchCriteria.ByText("bar").AndAutomationId("foo")));
             //ByNativePropertyTests...
-            Assert.Equal(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah"), SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah"));
-            Assert.NotEqual(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah"), SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah1"));
-            Assert.Equal(SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true), SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true));
-            Assert.NotEqual(SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true), SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, false));
-            Assert.NotEqual(SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true), SearchCriteria.ByNativeProperty(AutomationElement.IsDockPatternAvailableProperty, true));
+            Assert.That(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah"), Is.EqualTo(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah")));
+            Assert.That(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah"), Is.Not.EqualTo(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah1")));
+            Assert.That(SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true), Is.EqualTo(SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true)));
+            Assert.That(SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true), Is.Not.EqualTo(SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, false)));
+            Assert.That(SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true), Is.Not.EqualTo(SearchCriteria.ByNativeProperty(AutomationElement.IsDockPatternAvailableProperty, true)));
         }
 
-        [Fact]
+        [Test]
         public void TestToString()
         {
-            Assert.Equal("AutomationId=foo,Name=bar", SearchCriteria.ByText("bar").AndAutomationId("foo").ToString());
-            Assert.Equal("AutomationId=foo,Name=bar,Index=1", SearchCriteria.ByText("bar").AndAutomationId("foo").AndIndex(1).ToString());
+            Assert.That(SearchCriteria.ByText("bar").AndAutomationId("foo").ToString(), Is.EqualTo("AutomationId=foo,Name=bar"));
+            Assert.That(SearchCriteria.ByText("bar").AndAutomationId("foo").AndIndex(1).ToString(), Is.EqualTo("AutomationId=foo,Name=bar,Index=1"));
             //ByNativePropertyTests...
-            Assert.Equal("AutomationElementIdentifiers.NameProperty=blah", SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah").ToString());
-            Assert.Equal("AutomationElementIdentifiers.IsControlElementProperty=True", SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true).ToString());
+            Assert.That(SearchCriteria.ByNativeProperty(AutomationElement.NameProperty, "blah").ToString(), Is.EqualTo("AutomationElementIdentifiers.NameProperty=blah"));
+            Assert.That(SearchCriteria.ByNativeProperty(AutomationElement.IsControlElementProperty, true).ToString(), Is.EqualTo("AutomationElementIdentifiers.IsControlElementProperty=True"));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/UIItems/PlatformSpecificItemAttributeTest.cs b/src/TestStack.White.UnitTests/UIItems/PlatformSpecificItemAttributeTest.cs
index 6dd77d6b..b03aeaa0 100644
--- a/src/TestStack.White.UnitTests/UIItems/PlatformSpecificItemAttributeTest.cs
+++ b/src/TestStack.White.UnitTests/UIItems/PlatformSpecificItemAttributeTest.cs
@@ -1,17 +1,18 @@
+using NUnit.Framework;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.ListBoxItems;
 using TestStack.White.UIItems.Scrolling;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIItems
 {
+    [TestFixture]
     public class PlatformSpecificItemAttributeTest
     {
-        [Fact]
+        [Test]
         public void BaseTypeIsSpecified()
         {
-            Assert.Equal(typeof (ComboBox), PlatformSpecificItemAttribute.BaseType(typeof (WPFComboBox)));
-            Assert.Equal(typeof (IHScrollBar), PlatformSpecificItemAttribute.BaseType(typeof (HScrollBar)));
+            Assert.That(PlatformSpecificItemAttribute.BaseType(typeof(WPFComboBox)), Is.EqualTo(typeof(ComboBox)));
+            Assert.That(PlatformSpecificItemAttribute.BaseType(typeof(HScrollBar)), Is.EqualTo(typeof(IHScrollBar)));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.UnitTests/UIItems/WpfComboBoxVerticalSpanCalculatorTest.cs b/src/TestStack.White.UnitTests/UIItems/WpfComboBoxVerticalSpanCalculatorTest.cs
index 266124f2..a058ba07 100644
--- a/src/TestStack.White.UnitTests/UIItems/WpfComboBoxVerticalSpanCalculatorTest.cs
+++ b/src/TestStack.White.UnitTests/UIItems/WpfComboBoxVerticalSpanCalculatorTest.cs
@@ -1,30 +1,31 @@
 ﻿using System.Windows;
+using NUnit.Framework;
 using TestStack.White.UIItems.ListBoxItems;
-using Xunit;
 
 namespace TestStack.White.UnitTests.UIItems
 {
+    [TestFixture]
     public class WpfComboBoxVerticalSpanCalculatorTest
     {
-        [Fact]
+        [Test]
         public void Calculate()
         {
             var calculator = new WPFComboBoxVerticalSpanCalculator(Rectangle(0), Rectangle(10), Rectangle(100), 60);
-            VerticalSpan verticalSpan = calculator.VerticalSpan;
-            Assert.Equal(10, verticalSpan.Start);
-            Assert.Equal(70, verticalSpan.End);
+            var verticalSpan = calculator.VerticalSpan;
+            Assert.That(verticalSpan.Start, Is.EqualTo(10));
+            Assert.That(verticalSpan.End, Is.EqualTo(70));
         }
 
-        [Fact]
+        [Test]
         public void CalculateWhenListItemsDropUp()
         {
             var calculator = new WPFComboBoxVerticalSpanCalculator(Rectangle(70), Rectangle(10), Rectangle(100), 60);
-            VerticalSpan verticalSpan = calculator.VerticalSpan;
-            Assert.Equal(10, verticalSpan.Start);
-            Assert.Equal(70, verticalSpan.End);
+            var verticalSpan = calculator.VerticalSpan;
+            Assert.That(verticalSpan.Start, Is.EqualTo(10));
+            Assert.That(verticalSpan.End, Is.EqualTo(70));
         }
 
-        private static Rect Rectangle(int y)
+        private Rect Rectangle(int y)
         {
             return new Rect(10, y, 10, 10);
         }
diff --git a/src/TestStack.White.UnitTests/packages.config b/src/TestStack.White.UnitTests/packages.config
index 66371967..444a06a7 100644
--- a/src/TestStack.White.UnitTests/packages.config
+++ b/src/TestStack.White.UnitTests/packages.config
@@ -1,6 +1,5 @@
 ﻿<?xml version="1.0" encoding="utf-8"?>
 <packages>
-  <package id="Castle.Core" version="3.3.0" targetFramework="net40" />
   <package id="NSubstitute" version="1.7.2.0" targetFramework="net40" />
-  <package id="xunit" version="1.9.2" targetFramework="net40" />
+  <package id="NUnit" version="3.0.1" targetFramework="net40" />
 </packages>
\ No newline at end of file
diff --git a/src/TestStack.White.WebBrowser.UITests/BrowserFactoryTest.cs b/src/TestStack.White.WebBrowser.UITests/BrowserFactoryTest.cs
index ca39c756..bceb0b31 100644
--- a/src/TestStack.White.WebBrowser.UITests/BrowserFactoryTest.cs
+++ b/src/TestStack.White.WebBrowser.UITests/BrowserFactoryTest.cs
@@ -1,26 +1,27 @@
-using System;
-using Xunit;
+using NUnit.Framework;
 
 namespace TestStack.White.WebBrowser.UITests
 {
-    public class BrowserFactoryTest : IDisposable
+    [TestFixture]
+    public class BrowserFactoryTest
     {
-        private FirefoxWindow firefoxWindow;
-
-        [Fact(Skip = "UIAutomation not supported in firefox")]
+        [Test]
+        [Ignore("UIAutomation not supported in firefox")]
         public void FirefoxTest()
         {
-            firefoxWindow = Firefox.Launch("about:blank");
-            Assert.NotEqual(null, firefoxWindow);
-        }
-
-        public void TearDown()
-        {
-        }
-
-        public void Dispose()
-        {
-            firefoxWindow.Dispose();
+            FirefoxWindow firefoxWindow = null;
+            try
+            {
+                firefoxWindow = Firefox.Launch("about:blank");
+                Assert.That(firefoxWindow, Is.Not.Null);
+            }
+            finally
+            {
+                if (firefoxWindow != null)
+                {
+                    firefoxWindow.Dispose();
+                }
+            }
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.WebBrowser.UITests/Silverlight/SilverlightApplicationTest.cs b/src/TestStack.White.WebBrowser.UITests/Silverlight/SilverlightApplicationTest.cs
index 91be1fb4..048134df 100644
--- a/src/TestStack.White.WebBrowser.UITests/Silverlight/SilverlightApplicationTest.cs
+++ b/src/TestStack.White.WebBrowser.UITests/Silverlight/SilverlightApplicationTest.cs
@@ -1,14 +1,17 @@
-using Xunit;
+using NUnit.Framework;
 
 namespace TestStack.White.WebBrowser.UITests.Silverlight
 {
+    [TestFixture]
+    [Ignore("Ignoring broken tests in silverlight for the moment")]
     public class SilverlightApplicationTest : SilverlightTestFixture
     {
-        [Fact]
+        [Test]
+        [Ignore("Ignoring broken tests in silverlight for the moment")]
         public void FindSilverlightDocument()
         {
             var document = BrowserWindow.SilverlightDocument;
-            Assert.NotEqual(null, document);
+            Assert.That(document, Is.Not.Null);
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.WebBrowser.UITests/Silverlight/SilverlightDocumentTest.cs b/src/TestStack.White.WebBrowser.UITests/Silverlight/SilverlightDocumentTest.cs
index 4a57d320..15a6babf 100644
--- a/src/TestStack.White.WebBrowser.UITests/Silverlight/SilverlightDocumentTest.cs
+++ b/src/TestStack.White.WebBrowser.UITests/Silverlight/SilverlightDocumentTest.cs
@@ -1,22 +1,25 @@
+using NUnit.Framework;
 using TestStack.White.InputDevices;
 using TestStack.White.UIA;
 using TestStack.White.UIItems;
 using TestStack.White.UIItems.ListBoxItems;
 using TestStack.White.WebBrowser.Silverlight;
-using Xunit;
 
 namespace TestStack.White.WebBrowser.UITests.Silverlight
 {
+    [TestFixture]
+    [Ignore("Ignoring broken tests in silverlight for the moment")]
     public class SilverlightDocumentTest : SilverlightTestFixture
     {
         private SilverlightDocument document;
         private Label label;
 
-        [Fact]
+        [Test]
+        [Ignore("Ignoring broken tests in silverlight for the moment")]
         public void Get()
         {
             var button = document.Get<Button>("button");
-            Assert.NotEqual(null, button);
+            Assert.That(button, Is.Not.Null);
         }
 
         protected override void PostSetup()
@@ -25,47 +28,51 @@ protected override void PostSetup()
             label = document.Get<Label>("status");
         }
 
-        [Fact(Skip = "Ignoring broken tests in silverlight for the moment")]
+        [Test]
+        [Ignore("Ignoring broken tests in silverlight for the moment")]
         public void Event()
         {
-            Assert.NotEqual(null, label);
+            Assert.That(label, Is.Not.Null);
             var button = document.Get<Button>("button");
             button.Click();
-            Assert.Equal("0", label.Text);
+            Assert.That(label.Text, Is.EqualTo("0"));
         }
 
-        [Fact]
+        [Test]
+        [Ignore("Ignoring broken tests in silverlight for the moment")]
         public void TestComboBox()
         {
             var comboBox = document.Get<ComboBox>("combo");
-            Assert.Equal(2, comboBox.Items.Count);
-            Assert.Equal("foo", comboBox.Items[0].Text);
+            Assert.That(comboBox.Items, Has.Count.EqualTo(2));
+            Assert.That(comboBox.Items[0].Text, Is.EqualTo("foo"));
         }
 
-        [Fact(Skip = "Ignoring broken tests in silverlight for the moment")]
+        [Test]
+        [Ignore("Ignoring broken tests in silverlight for the moment")]
         public void Tooltip()
         {
             var button = document.Get<Button>("button");
-            ToolTip toolTip = document.GetToolTipOn(button);
-            Assert.Equal(null, toolTip);
+            var toolTip = document.GetToolTipOn(button);
+            Assert.That(toolTip, Is.Null);
 
             var comboBox = document.Get<ComboBox>("combo");
             toolTip = document.GetToolTipOn(comboBox);
-            Assert.NotEqual(null, toolTip);
+            Assert.That(toolTip, Is.Not.Null);
             Debug.LogPatterns(toolTip);
             Debug.LogProperties(toolTip);
         }
 
-        [Fact(Skip = "Ignoring broken tests in silverlight for the moment")]
+        [Test]
+        [Ignore("Ignoring broken tests in silverlight for the moment")]
         public void SelectItemInComboBoxWhichIsAlreadySelected()
         {
-            string previousText = label.Text;
+            var previousText = label.Text;
             var button = document.Get<Button>("button");
             var comboBox = document.Get<ComboBox>("combo");
             comboBox.Select("foo");
             comboBox.Select("foo");
             Mouse.Instance.Click(button.Bounds.Center(), document);
-            Assert.NotEqual(label.Text, previousText);
+            Assert.That(label.Text, Is.Not.EqualTo(previousText));
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White.WebBrowser.UITests/TestStack.White.WebBrowser.UITests.csproj b/src/TestStack.White.WebBrowser.UITests/TestStack.White.WebBrowser.UITests.csproj
index 7a469fb6..d35bce76 100644
--- a/src/TestStack.White.WebBrowser.UITests/TestStack.White.WebBrowser.UITests.csproj
+++ b/src/TestStack.White.WebBrowser.UITests/TestStack.White.WebBrowser.UITests.csproj
@@ -36,7 +36,6 @@
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
@@ -61,6 +60,9 @@
     <Reference Include="Castle.Core">
       <HintPath>..\packages\Castle.Core.3.3.0\lib\net40-client\Castle.Core.dll</HintPath>
     </Reference>
+    <Reference Include="nunit.framework">
+      <HintPath>..\packages\NUnit.3.0.1\lib\net40\nunit.framework.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
@@ -69,10 +71,6 @@
       <RequiredTargetFramework>3.0</RequiredTargetFramework>
     </Reference>
     <Reference Include="WindowsBase" />
-    <Reference Include="xunit">
-      <HintPath>..\packages\xunit.1.9.2\lib\net20\xunit.dll</HintPath>
-      <Private>True</Private>
-    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -92,7 +90,9 @@
       <Name>TestStack.White.WebBrowser</Name>
     </ProjectReference>
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
   <ItemGroup>
     <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
       <Visible>False</Visible>
@@ -109,7 +109,6 @@
     <None Include="packages.config" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
diff --git a/src/TestStack.White.WebBrowser.UITests/WebBrowserCodebaseTest.cs b/src/TestStack.White.WebBrowser.UITests/WebBrowserCodebaseTest.cs
index 16bb8ff4..789836e5 100644
--- a/src/TestStack.White.WebBrowser.UITests/WebBrowserCodebaseTest.cs
+++ b/src/TestStack.White.WebBrowser.UITests/WebBrowserCodebaseTest.cs
@@ -1,13 +1,14 @@
+using NUnit.Framework;
 using System;
 using System.Linq;
 using TestStack.White.SystemExtensions;
-using Xunit;
 
 namespace TestStack.White.WebBrowser.UITests
 {
+    [TestFixture]
     public class WebBrowserCodebaseTest
     {
-        [Fact]
+        [Test]
         public void AllMethodsAreVirtual()
         {
             var virtuals = typeof(Firefox).Assembly.GetTypes()
diff --git a/src/TestStack.White.WebBrowser.UITests/packages.config b/src/TestStack.White.WebBrowser.UITests/packages.config
index 3c0c3570..70a3f7c7 100644
--- a/src/TestStack.White.WebBrowser.UITests/packages.config
+++ b/src/TestStack.White.WebBrowser.UITests/packages.config
@@ -1,5 +1,5 @@
 ﻿<?xml version="1.0" encoding="utf-8"?>
 <packages>
   <package id="Castle.Core" version="3.3.0" targetFramework="net40" />
-  <package id="xunit" version="1.9.2" targetFramework="net40" />
+  <package id="NUnit" version="3.0.1" targetFramework="net40" />
 </packages>
\ No newline at end of file
diff --git a/src/TestStack.White.WebBrowser.UnitTests/TestStack.White.WebBrowser.UnitTests.csproj b/src/TestStack.White.WebBrowser.UnitTests/TestStack.White.WebBrowser.UnitTests.csproj
index a7c4161d..11915d5c 100644
--- a/src/TestStack.White.WebBrowser.UnitTests/TestStack.White.WebBrowser.UnitTests.csproj
+++ b/src/TestStack.White.WebBrowser.UnitTests/TestStack.White.WebBrowser.UnitTests.csproj
@@ -33,6 +33,7 @@
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <TargetFrameworkProfile />
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
     <DebugSymbols>true</DebugSymbols>
@@ -53,6 +54,9 @@
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="nunit.framework">
+      <HintPath>..\packages\NUnit.3.0.1\lib\net40\nunit.framework.dll</HintPath>
+    </Reference>
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
@@ -72,6 +76,9 @@
       <Install>true</Install>
     </BootstrapperPackage>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
@@ -80,4 +87,5 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
+
diff --git a/src/TestStack.White.WebBrowser.UnitTests/packages.config b/src/TestStack.White.WebBrowser.UnitTests/packages.config
new file mode 100644
index 00000000..82ba4df5
--- /dev/null
+++ b/src/TestStack.White.WebBrowser.UnitTests/packages.config
@@ -0,0 +1,4 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="NUnit" version="3.0.1" targetFramework="net40" />
+</packages>
\ No newline at end of file
diff --git a/src/TestStack.White.WebBrowser/TestStack.White.WebBrowser.csproj b/src/TestStack.White.WebBrowser/TestStack.White.WebBrowser.csproj
index 48e05b4c..9169945e 100644
--- a/src/TestStack.White.WebBrowser/TestStack.White.WebBrowser.csproj
+++ b/src/TestStack.White.WebBrowser/TestStack.White.WebBrowser.csproj
@@ -35,7 +35,6 @@
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
@@ -122,7 +121,6 @@
     </BootstrapperPackage>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
@@ -130,4 +128,5 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
+
diff --git a/src/TestStack.White.ncrunchsolution b/src/TestStack.White.ncrunchsolution
deleted file mode 100644
index 05adb09d..00000000
--- a/src/TestStack.White.ncrunchsolution
+++ /dev/null
@@ -1,13 +0,0 @@
-<SolutionConfiguration>
-  <FileVersion>1</FileVersion>
-  <AutoEnableOnStartup>True</AutoEnableOnStartup>
-  <AllowParallelTestExecution>false</AllowParallelTestExecution>
-  <AllowTestsToRunInParallelWithThemselves>true</AllowTestsToRunInParallelWithThemselves>
-  <FrameworkUtilisationTypeForNUnit>UseDynamicAnalysis</FrameworkUtilisationTypeForNUnit>
-  <FrameworkUtilisationTypeForGallio>UseStaticAnalysis</FrameworkUtilisationTypeForGallio>
-  <FrameworkUtilisationTypeForMSpec>UseStaticAnalysis</FrameworkUtilisationTypeForMSpec>
-  <FrameworkUtilisationTypeForMSTest>UseStaticAnalysis</FrameworkUtilisationTypeForMSTest>
-  <EngineModes>Run all tests automatically:BFRydWU=;Run all tests manually:BUZhbHNl;Run impacted tests automatically, others manually (experimental!):CklzSW1wYWN0ZWQ=;Run pinned tests automatically, others manually:CElzUGlubmVk</EngineModes>
-  <MetricsExclusionList>
-</MetricsExclusionList>
-</SolutionConfiguration>
\ No newline at end of file
diff --git a/src/TestStack.White.sln b/src/TestStack.White.sln
index a5fe2a1c..73e7349e 100644
--- a/src/TestStack.White.sln
+++ b/src/TestStack.White.sln
@@ -1,9 +1,11 @@
+﻿
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 2013
-VisualStudioVersion = 12.0.30501.0
+VisualStudioVersion = 12.0.31101.0
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1BCBA4C4-8C47-496C-B0D4-FDE9D066ED27}"
 	ProjectSection(SolutionItems) = preProject
+		..\appveyor.yml = ..\appveyor.yml
 		..\Build.cmd = ..\Build.cmd
 		..\Changes.txt = ..\Changes.txt
 		..\LICENSE-APACHE.txt = ..\LICENSE-APACHE.txt
@@ -15,13 +17,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestApps", "TestApps", "{1AF6AEE7-C9D5-4B05-BEFE-AB61D83667D4}"
 EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{87CF3A77-853B-40BD-ABFF-829DBB39D6AB}"
-	ProjectSection(SolutionItems) = preProject
-		.nuget\NuGet.Config = .nuget\NuGet.Config
-		.nuget\NuGet.exe = .nuget\NuGet.exe
-		.nuget\NuGet.targets = .nuget\NuGet.targets
-	EndProjectSection
-EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestStack.White", "TestStack.White\TestStack.White.csproj", "{12C59CE2-9CF7-44F4-B27C-90754609F979}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestStack.White.UnitTests", "TestStack.White.UnitTests\TestStack.White.UnitTests.csproj", "{7C7960B2-905D-409A-8068-B010A35BA151}"
diff --git a/src/TestStack.White.sln.DotSettings b/src/TestStack.White.sln.DotSettings
index db06dbda..5ad2a6e5 100644
--- a/src/TestStack.White.sln.DotSettings
+++ b/src/TestStack.White.sln.DotSettings
@@ -15,7 +15,9 @@
 	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
 	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
 	<s:Boolean x:Key="/Default/Environment/MemoryUsageIndicator/IsVisible/@EntryValue">True</s:Boolean>
+	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
+	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/Environment/UnitTesting/ShadowCopy/@EntryValue">False</s:Boolean>
 	<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue">&lt;data /&gt;</s:String>
 	<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters /&gt;&lt;/data&gt;</s:String></wpf:ResourceDictionary>
\ No newline at end of file
diff --git a/src/TestStack.White/Configuration/CoreConfiguration.cs b/src/TestStack.White/Configuration/ICoreConfiguration.cs
similarity index 100%
rename from src/TestStack.White/Configuration/CoreConfiguration.cs
rename to src/TestStack.White/Configuration/ICoreConfiguration.cs
diff --git a/src/TestStack.White/Configuration/UIItemIdConfiguration.cs b/src/TestStack.White/Configuration/IUIItemIdConfiguration.cs
similarity index 50%
rename from src/TestStack.White/Configuration/UIItemIdConfiguration.cs
rename to src/TestStack.White/Configuration/IUIItemIdConfiguration.cs
index 66dbf1c7..528decdb 100644
--- a/src/TestStack.White/Configuration/UIItemIdConfiguration.cs
+++ b/src/TestStack.White/Configuration/IUIItemIdConfiguration.cs
@@ -1,6 +1,6 @@
 namespace TestStack.White.Configuration
 {
-    public interface UIItemIdConfiguration
+    public interface IUIItemIdConfiguration
     {
         string TableVerticalScrollBar { get; set; }
         string TableHorizontalScrollBar { get; set; }
@@ -11,5 +11,17 @@ public interface UIItemIdConfiguration
         string HorizontalScrollBar { get; set; }
         string VerticalScrollBar { get; set; }
         string TableCellPrefix { get; set; }
+        /// <summary>
+        /// The text for the "browse"-button
+        /// </summary>
+        string BrowseText { get; set; }
+        /// <summary>
+        /// The dialog title of the open browse dialog
+        /// </summary>
+        string OpenFileDialogTitle { get; set; }
+        /// <summary>
+        /// Text of the misc category on a property grid
+        /// </summary>
+        string PropertyGridMiscText { get; set; }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White/Configuration/UIItemIdAppXmlConfiguration.cs b/src/TestStack.White/Configuration/UIItemIdAppXmlConfiguration.cs
index 11661f63..6392c006 100644
--- a/src/TestStack.White/Configuration/UIItemIdAppXmlConfiguration.cs
+++ b/src/TestStack.White/Configuration/UIItemIdAppXmlConfiguration.cs
@@ -1,32 +1,55 @@
 using System.Collections.Generic;
 using TestStack.White.Bricks;
+using TestStack.White.Utility;
 
 namespace TestStack.White.Configuration
 {
-    public class UIItemIdAppXmlConfiguration : AssemblyConfiguration, UIItemIdConfiguration
+    public class UIItemIdAppXmlConfiguration : AssemblyConfiguration, IUIItemIdConfiguration
     {
-        private static UIItemIdConfiguration instance;
+        private static IUIItemIdConfiguration instance;
         private static readonly Dictionary<string, object> DefaultValues = new Dictionary<string, object>();
 
         static UIItemIdAppXmlConfiguration()
         {
-            DefaultValues.Add("TableVerticalScrollBar", "Vertical Scroll Bar");
-            DefaultValues.Add("TableHorizontalScrollBar", "Horizontal Scroll Bar");
-            DefaultValues.Add("TableColumn", "Row ");
-            DefaultValues.Add("TableTopLeftHeaderCell", "Top Left Header Cell");
-            DefaultValues.Add("TableCellNullValue", "(null)");
-            DefaultValues.Add("TableHeader", "Top Row");
-            DefaultValues.Add("HorizontalScrollBar", "Horizontal ScrollBar");
-            DefaultValues.Add("VerticalScrollBar", "Vertical ScrollBar");
-            DefaultValues.Add("TableCellPrefix", " Row ");
+            switch (SystemLanguageRetreiver.GetCurrentOsCulture().TwoLetterISOLanguageName)
+            {
+                case "de":
+                    DefaultValues.Add("TableVerticalScrollBar", "Vertikale Schiebeleiste");
+                    DefaultValues.Add("TableHorizontalScrollBar", "Horizontale Schiebeleiste");
+                    DefaultValues.Add("TableColumn", "Zeile ");
+                    DefaultValues.Add("TableTopLeftHeaderCell", "Obere linke Headerzelle");
+                    DefaultValues.Add("TableCellNullValue", "(null)");
+                    DefaultValues.Add("TableHeader", "Oberste Zeile");
+                    DefaultValues.Add("HorizontalScrollBar", "Horizontale Schiebeleiste");
+                    DefaultValues.Add("VerticalScrollBar", "Vertikale Schiebeleiste");
+                    DefaultValues.Add("TableCellPrefix", " Zeile ");
+                    DefaultValues.Add("BrowseText", "Durchsuchen...");
+                    DefaultValues.Add("OpenFileDialogTitle", "Datei �ffnen");
+                    DefaultValues.Add("PropertyGridMiscText", "Sonstiges");
+                    break;
+                default:
+                    DefaultValues.Add("TableVerticalScrollBar", "Vertical Scroll Bar");
+                    DefaultValues.Add("TableHorizontalScrollBar", "Horizontal Scroll Bar");
+                    DefaultValues.Add("TableColumn", "Row ");
+                    DefaultValues.Add("TableTopLeftHeaderCell", "Top Left Header Cell");
+                    DefaultValues.Add("TableCellNullValue", "(null)");
+                    DefaultValues.Add("TableHeader", "Top Row");
+                    DefaultValues.Add("HorizontalScrollBar", "Horizontal ScrollBar");
+                    DefaultValues.Add("VerticalScrollBar", "Vertical ScrollBar");
+                    DefaultValues.Add("TableCellPrefix", " Row ");
+                    DefaultValues.Add("BrowseText", "Browse...");
+                    DefaultValues.Add("OpenFileDialogTitle", "Open File");
+                    DefaultValues.Add("PropertyGridMiscText", "Misc");
+                    break;
+            }
         }
 
-        public static UIItemIdConfiguration Instance
+        public static IUIItemIdConfiguration Instance
         {
             get { return instance ?? (instance = new UIItemIdAppXmlConfiguration()); }
         }
 
-        private UIItemIdAppXmlConfiguration() : 
+        private UIItemIdAppXmlConfiguration() :
             base("White", "UIItemId", DefaultValues, CoreAppXmlConfiguration.Instance.LoggerFactory.Create(typeof(UIItemIdAppXmlConfiguration)))
         { }
 
@@ -88,5 +111,23 @@ public virtual string TableCellPrefix
             get { return UsedValues["TableCellPrefix"]; }
             set { SetUsedValue("TableCellPrefix", value); }
         }
+
+        public virtual string BrowseText
+        {
+            get { return UsedValues["BrowseText"]; }
+            set { SetUsedValue("BrowseText", value); }
+        }
+
+        public virtual string OpenFileDialogTitle
+        {
+            get { return UsedValues["OpenFileDialogTitle"]; }
+            set { SetUsedValue("OpenFileDialogTitle", value); }
+        }
+
+        public virtual string PropertyGridMiscText
+        {
+            get { return UsedValues["PropertyGridMiscText"]; }
+            set { SetUsedValue("PropertyGridMiscText", value); }
+        }        
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White/TestStack.White.csproj b/src/TestStack.White/TestStack.White.csproj
index 3b61c88f..5e08db94 100644
--- a/src/TestStack.White/TestStack.White.csproj
+++ b/src/TestStack.White/TestStack.White.csproj
@@ -34,7 +34,6 @@
     <UseApplicationTrust>false</UseApplicationTrust>
     <BootstrapperEnabled>true</BootstrapperEnabled>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
@@ -111,10 +110,10 @@
     <Compile Include="AutomationException.cs" />
     <Compile Include="CacheMode.cs" />
     <Compile Include="Configuration\CoreAppXmlConfiguration.cs" />
-    <Compile Include="Configuration\CoreConfiguration.cs" />
+    <Compile Include="Configuration\ICoreConfiguration.cs" />
     <Compile Include="Configuration\IWaitHook.cs" />
     <Compile Include="Configuration\UIItemIdAppXmlConfiguration.cs" />
-    <Compile Include="Configuration\UIItemIdConfiguration.cs" />
+    <Compile Include="Configuration\IUIItemIdConfiguration.cs" />
     <Compile Include="Constants.cs" />
     <Compile Include="CoreTestTemplate.cs" />
     <Compile Include="Debug.cs" />
@@ -214,6 +213,7 @@
     </Compile>
     <Compile Include="Utility\PropertyResolver.cs" />
     <Compile Include="Utility\Retry.cs" />
+    <Compile Include="Utility\SystemLanguageRetreiver.cs" />
     <Compile Include="Utility\TestExecutionMonitor.cs" />
     <Compile Include="WindowsAPI\InputFactory.cs" />
     <Compile Include="WindowsAPI\ThirtyTwoBitInput.cs" />
@@ -427,7 +427,6 @@
     </None>
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">
@@ -435,4 +434,5 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
+
diff --git a/src/TestStack.White/UIItems/Finders/ControlTypeProperty.cs b/src/TestStack.White/UIItems/Finders/ControlTypeProperty.cs
index 2ab719e4..0a62b2f5 100644
--- a/src/TestStack.White/UIItems/Finders/ControlTypeProperty.cs
+++ b/src/TestStack.White/UIItems/Finders/ControlTypeProperty.cs
@@ -11,11 +11,11 @@ protected ControlTypeProperty()
         }
 
         public ControlTypeProperty(ControlType controlType, string displayName)
-            : base(controlType, displayName, AutomationElement.ControlTypeProperty) {}
+            : base(controlType, displayName, AutomationElement.ControlTypeProperty) { }
 
         public override string DisplayValue
         {
-            get { return ((ControlType) Value).LocalizedControlType; }
+            get { return ((ControlType)Value).LocalizedControlType; }
         }
     }
 }
\ No newline at end of file
diff --git a/src/TestStack.White/UIItems/PropertyGridItems/PropertyGridElementFinder.cs b/src/TestStack.White/UIItems/PropertyGridItems/PropertyGridElementFinder.cs
index ac7c2af0..df5a7073 100644
--- a/src/TestStack.White/UIItems/PropertyGridItems/PropertyGridElementFinder.cs
+++ b/src/TestStack.White/UIItems/PropertyGridItems/PropertyGridElementFinder.cs
@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.Windows.Automation;
 using TestStack.White.AutomationElementSearch;
+using TestStack.White.Configuration;
 
 namespace TestStack.White.UIItems.PropertyGridItems
 {
@@ -21,8 +22,8 @@ public virtual List<AutomationElement> FindRows()
 
         public virtual AutomationElement FindBrowseButton()
         {
-            AutomationElement element = finder.Child(AutomationSearchCondition.ByControlType(ControlType.Table),
-                                                     AutomationSearchCondition.ByControlType(ControlType.Button).OfName("Browse..."));
+            var element = finder.Child(AutomationSearchCondition.ByControlType(ControlType.Table),
+                AutomationSearchCondition.ByControlType(ControlType.Button).OfName(UIItemIdAppXmlConfiguration.Instance.BrowseText));
             return element;
         }
     }
diff --git a/src/TestStack.White/Utility/SystemLanguageRetreiver.cs b/src/TestStack.White/Utility/SystemLanguageRetreiver.cs
new file mode 100644
index 00000000..70977919
--- /dev/null
+++ b/src/TestStack.White/Utility/SystemLanguageRetreiver.cs
@@ -0,0 +1,13 @@
+﻿using System.Globalization;
+
+namespace TestStack.White.Utility
+{
+    public static class SystemLanguageRetreiver
+    {
+        public static CultureInfo GetCurrentOsCulture()
+        {
+            var currentOsCulture = CultureInfo.InstalledUICulture;
+            return currentOsCulture;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Tools/Fody/Fody.dll b/src/Tools/Fody/Fody.dll
deleted file mode 100644
index 5b86dc22..00000000
Binary files a/src/Tools/Fody/Fody.dll and /dev/null differ
diff --git a/src/Tools/Fody/Fody.targets b/src/Tools/Fody/Fody.targets
deleted file mode 100644
index 8b30e3a6..00000000
--- a/src/Tools/Fody/Fody.targets
+++ /dev/null
@@ -1,88 +0,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Choose>
-    <When Condition="$(NCrunchOriginalSolutionDir) != '' And $(NCrunchOriginalSolutionDir) != '*Undefined*'">
-      <PropertyGroup>
-        <FodySolutionDir>$(NCrunchOriginalSolutionDir)</FodySolutionDir>
-      </PropertyGroup>
-    </When>
-    <When Condition="$(SolutionDir) != '' And $(SolutionDir) != '*Undefined*'">
-      <PropertyGroup>
-        <FodySolutionDir>$(SolutionDir)</FodySolutionDir>
-      </PropertyGroup>
-    </When>
-    <When Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">
-      <PropertyGroup>
-        <FodySolutionDir>$(MSBuildProjectDirectory)\..\</FodySolutionDir>
-      </PropertyGroup>
-    </When>
-  </Choose>
-  <Choose>
-    <When Condition="$(KeyOriginatorFile) != '' And $(KeyOriginatorFile) != '*Undefined*'">
-      <PropertyGroup>
-        <FodyKeyFilePath>$(KeyOriginatorFile)</FodyKeyFilePath>
-      </PropertyGroup>
-    </When>
-    <When Condition="$(AssemblyOriginatorKeyFile) != '' And $(AssemblyOriginatorKeyFile) != '*Undefined*'">
-      <PropertyGroup>
-        <FodyKeyFilePath>$(AssemblyOriginatorKeyFile)</FodyKeyFilePath>
-      </PropertyGroup>
-    </When>
-    <Otherwise >
-      <PropertyGroup>
-        <FodyKeyFilePath></FodyKeyFilePath>
-      </PropertyGroup>
-    </Otherwise>
-  </Choose>
-  <PropertyGroup>
-    <IntermediateDir>$(ProjectDir)$(IntermediateOutputPath)</IntermediateDir>
-    <FodyMessageImportance Condition="$(FodyMessageImportance) == '' Or $(FodyMessageImportance) == '*Undefined*'">Low</FodyMessageImportance>
-    <FodySignAssembly Condition="$(FodySignAssembly) == '' Or $(FodySignAssembly) == '*Undefined*'">$(SignAssembly)</FodySignAssembly>
-  </PropertyGroup>
-  <UsingTask
-      TaskName="Fody.WeavingTask"
-      AssemblyFile="$(MSBuildThisFileDirectory)Fody.dll" />
-  <Target
-      AfterTargets="AfterCompile"
-      Name="WinFodyTarget"
-      Condition=" '$(OS)' == 'Windows_NT'">
-
-    <Fody.WeavingTask
-          AssemblyPath="@(IntermediateAssembly)"
-          IntermediateDir="$(IntermediateDir)"
-          KeyFilePath="$(FodyKeyFilePath)"
-          MessageImportance="$(FodyMessageImportance)"
-          ProjectDirectory="$(ProjectDir)"
-          SolutionDir="$(FodySolutionDir)"
-          References="@(ReferencePath)"
-          SignAssembly="$(FodySignAssembly)"
-          ReferenceCopyLocalPaths="@(ReferenceCopyLocalPaths)"
-          DefineConstants="$(DefineConstants)"
-      />
-  </Target>
-
-  <Target
-      AfterTargets="AfterBuild"
-      Name="NonWinFodyTarget"
-      Condition=" '$(OS)' != 'Windows_NT'">
-    <Fody.WeavingTask
-          AssemblyPath="$(TargetPath)"
-          IntermediateDir="$(IntermediateDir)"
-          KeyFilePath="$(FodyKeyFilePath)"
-          MessageImportance="$(FodyMessageImportance)"
-          ProjectDirectory="$(ProjectDir)"
-          SolutionDir="$(FodySolutionDir)"
-          References="@(ReferencePath)"
-          SignAssembly="$(FodySignAssembly)"
-          ReferenceCopyLocalPaths="$(ReferenceCopyLocalPaths)"
-          DefineConstants="$(DefineConstants)"
-      />
-  </Target>
-
-
-  <!--Support for ncrunch-->
-  <ItemGroup>
-    <None Include="$(MSBuildThisFileDirectory)*.*" />
-  </ItemGroup>
-
-</Project>
\ No newline at end of file
diff --git a/src/Tools/Fody/FodyCommon.dll b/src/Tools/Fody/FodyCommon.dll
deleted file mode 100644
index e2f0beee..00000000
Binary files a/src/Tools/Fody/FodyCommon.dll and /dev/null differ
diff --git a/src/Tools/Fody/FodyIsolated.dll b/src/Tools/Fody/FodyIsolated.dll
deleted file mode 100644
index f8ae2150..00000000
Binary files a/src/Tools/Fody/FodyIsolated.dll and /dev/null differ
diff --git a/src/Tools/Fody/Mono.Cecil.Mdb.dll b/src/Tools/Fody/Mono.Cecil.Mdb.dll
deleted file mode 100644
index 60cb2d8e..00000000
Binary files a/src/Tools/Fody/Mono.Cecil.Mdb.dll and /dev/null differ
diff --git a/src/Tools/Fody/Mono.Cecil.Pdb.dll b/src/Tools/Fody/Mono.Cecil.Pdb.dll
deleted file mode 100644
index 9c4bebb3..00000000
Binary files a/src/Tools/Fody/Mono.Cecil.Pdb.dll and /dev/null differ
diff --git a/src/Tools/Fody/Mono.Cecil.Rocks.dll b/src/Tools/Fody/Mono.Cecil.Rocks.dll
deleted file mode 100644
index b8ba1e86..00000000
Binary files a/src/Tools/Fody/Mono.Cecil.Rocks.dll and /dev/null differ
diff --git a/src/Tools/Fody/Mono.Cecil.dll b/src/Tools/Fody/Mono.Cecil.dll
deleted file mode 100644
index 99bb98ac..00000000
Binary files a/src/Tools/Fody/Mono.Cecil.dll and /dev/null differ
diff --git a/tools/NUnit/RunTests.bat b/tools/NUnit/RunTests.bat
new file mode 100644
index 00000000..1c8c9e14
--- /dev/null
+++ b/tools/NUnit/RunTests.bat
@@ -0,0 +1,5 @@
+IF '%1'=='' (SET configuration=Debug) ELSE (SET configuration=%1)
+
+"..\..\src\packages\NUnit.Console.3.0.1\tools\nunit3-console.exe" TestStack.White.nunit
+
+pause
\ No newline at end of file
diff --git a/tools/NUnit/TestStack.White.nunit b/tools/NUnit/TestStack.White.nunit
new file mode 100644
index 00000000..8b128cf8
--- /dev/null
+++ b/tools/NUnit/TestStack.White.nunit
@@ -0,0 +1,10 @@
+﻿<NUnitProject>
+  <Settings activeconfig="Debug" processModel="Default" domainUsage="Default" appbase="..\..\src" />
+  <Config name="Debug" binpathtype="Auto" appbase="">
+    <assembly path="TestStack.White.ScreenObjects\bin\Debug\TestStack.White.ScreenObjects.UITests.dll" />
+    <assembly path="TestStack.White.UITests\bin\Debug\TestStack.White.UITests.dll" />
+    <assembly path="TestStack.White.UnitTests\bin\Debug\TestStack.White.UnitTests.dll" />
+    <assembly path="TestStack.White.WebBrowser.UITests\bin\Debug\TestStack.White.WebBrowser.UITests.dll" />
+    <assembly path="TestStack.White.WebBrowser.UnitTests\bin\Debug\TestStack.White.WebBrowser.UnitTests.dll" />
+  </Config>
+</NUnitProject>
\ No newline at end of file
diff --git a/tools/NUnit/nunit-editor.exe b/tools/NUnit/nunit-editor.exe
new file mode 100644
index 00000000..b8b4c6f8
Binary files /dev/null and b/tools/NUnit/nunit-editor.exe differ
diff --git a/tools/xUnit/HTML.xslt b/tools/xUnit/HTML.xslt
deleted file mode 100644
index 2a1a4c72..00000000
--- a/tools/xUnit/HTML.xslt
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-    <xsl:output method="html"/>
-    <xsl:template match="/">
-        <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">]]></xsl:text>
-        <html>
-            <head>
-                <title>
-                    xUnit.net Test Results - <xsl:value-of select="@name"/>
-                </title>
-                <style type="text/css">
-                    body { font-family: Calibri, Verdana, Arial, sans-serif; background-color: White; color: Black; }
-                    h2,h3,h4,h5 { margin: 0; padding: 0; }
-                    h3 { font-weight: normal; }
-                    h5 { font-weight: normal; font-style: italic; margin-bottom: 0.75em; }
-                    pre { font-family: Consolas; font-size: 85%; margin: 0 0 0 1em; padding: 0; }
-                    .divided { border-top: solid 1px #f0f5fa; padding-top: 0.5em; }
-                    .row, .altrow { padding: 0.1em 0.3em; }
-                    .row { background-color: #f0f5fa; }
-                    .altrow { background-color: #e1ebf4; }
-                    .success, .failure, .skipped { font-family: Arial Unicode MS; font-weight: normal; float: left; width: 1em; display: block; }
-                    .success { color: #0c0; }
-                    .failure { color: #c00; }
-                    .skipped { color: #cc0; }
-                    .timing { float: right; }
-                    .indent { margin: 0.25em 0 0.5em 2em; }
-                    .clickable { cursor: pointer; }
-                    .testcount { font-size: 85%; }
-                </style>
-                <script language="javascript">
-                    function ToggleClass(id) {
-                        var elem = document.getElementById(id);
-                        if (elem.style.display == "none") {
-                            elem.style.display = "block";
-                        }
-                        else {
-                            elem.style.display = "none";
-                        }
-                    }
-                </script>
-            </head>
-            <body>
-                <h3 class="divided"><b>Assemblies Run</b></h3>
-                <xsl:apply-templates select="//assembly"/>
-
-                <h3 class="divided"><b>Summary</b></h3>
-                <div>
-                    Tests run: <a href="#all"><b><xsl:value-of select="sum(//assembly/@total)"/></b></a> &#160;
-                    Failures: <a href="#failures"><b><xsl:value-of select="sum(//assembly/@failed)"/></b></a>,
-                    Skipped: <a href="#skipped"><b><xsl:value-of select="sum(//assembly/@skipped)"/></b></a>,
-                    Run time: <b><xsl:value-of select="sum(//assembly/@time)"/>s</b>
-                </div>
-                <xsl:if test="//assembly/class/test[@result='Fail']">
-                    <br />
-                    <h2><a name="failures"></a>Failed tests</h2>
-                    <xsl:apply-templates select="//assembly/class/test[@result='Fail']"><xsl:sort select="@name"/></xsl:apply-templates>
-                </xsl:if>
-                <xsl:if test="//assembly/class/failure">
-                    <br />
-                    <h2><a name="failures"></a>Failed fixtures</h2>
-                    <xsl:apply-templates select="//assembly/class/failure"><xsl:sort select="../@name"/></xsl:apply-templates>
-                </xsl:if>
-                <xsl:if test="//assembly/@skipped > 0">
-                    <br />
-                    <h2><a name="skipped"></a>Skipped tests</h2>
-                    <xsl:apply-templates select="//assembly/class/test[@result='Skip']"><xsl:sort select="@name"/></xsl:apply-templates>
-                </xsl:if>
-                <br />
-                <h2><a name="all"></a>All tests</h2>
-                <h5>Click test class name to expand/collapse test details</h5>
-                <xsl:apply-templates select="//assembly/class"><xsl:sort select="@name"/></xsl:apply-templates>
-            </body>
-        </html>
-    </xsl:template>
-
-    <xsl:template match="assembly">
-        <div><xsl:value-of select="@name"/></div>
-    </xsl:template>
-
-    <xsl:template match="test">
-        <div>
-            <xsl:attribute name="class"><xsl:if test="(position() mod 2 = 0)">alt</xsl:if>row</xsl:attribute>
-            <xsl:if test="@result!='Skip'"><span class="timing"><xsl:value-of select="@time"/>s</span></xsl:if>
-            <xsl:if test="@result='Skip'"><span class="timing">Skipped</span><span class="skipped">&#x2762;</span></xsl:if>
-            <xsl:if test="@result='Fail'"><span class="failure">&#x2718;</span></xsl:if>
-            <xsl:if test="@result='Pass'"><span class="success">&#x2714;</span></xsl:if>
-            &#160;<xsl:value-of select="@name"/>
-            <xsl:if test="child::node()/message"> : <xsl:value-of select="child::node()/message"/></xsl:if>
-            <br clear="all" />
-            <xsl:if test="failure/stack-trace">
-                <pre><xsl:value-of select="failure/stack-trace"/></pre>
-            </xsl:if>
-            <xsl:if test="output">
-                <h4>Output</h4>
-                <pre><xsl:value-of select="output"/></pre>
-            </xsl:if>
-        </div>
-    </xsl:template>
-
-    <xsl:template match="failure">
-        <span class="failure">&#x2718;</span> <xsl:value-of select="../@name"/> : <xsl:value-of select="message"/><br clear="all"/>
-        Stack Trace:<br />
-        <pre><xsl:value-of select="stack-trace"/></pre>
-    </xsl:template>
-
-    <xsl:template match="class">
-        <h3>
-            <span class="timing"><xsl:value-of select="@time"/>s</span>
-            <span class="clickable">
-                <xsl:attribute name="onclick">ToggleClass('class<xsl:value-of select="generate-id()"/>')</xsl:attribute>
-                <xsl:attribute name="ondblclick">ToggleClass('class<xsl:value-of select="generate-id()"/>')</xsl:attribute>
-                <xsl:if test="@failed > 0"><span class="failure">&#x2718;</span></xsl:if>
-                <xsl:if test="@failed = 0"><span class="success">&#x2714;</span></xsl:if>
-                &#160;<xsl:value-of select="@name"/>
-                &#160;<span class="testcount">(<xsl:value-of select="@total"/>&#160;test<xsl:if test="@total > 1">s</xsl:if>)</span>
-            </span>
-            <br clear="all" />
-        </h3>
-        <div class="indent">
-            <xsl:if test="@failed = 0"><xsl:attribute name="style">display: none;</xsl:attribute></xsl:if>
-            <xsl:attribute name="id">class<xsl:value-of select="generate-id()"/></xsl:attribute>
-            <xsl:apply-templates select="test"><xsl:sort select="@name"/></xsl:apply-templates>
-        </div>
-    </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/tools/xUnit/NUnitXml.xslt b/tools/xUnit/NUnitXml.xslt
deleted file mode 100644
index 4d82799f..00000000
--- a/tools/xUnit/NUnitXml.xslt
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-  <xsl:output cdata-section-elements="message stack-trace"/>
-
-  <xsl:template match="/">
-    <xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="assembly">
-    <test-results>
-      <xsl:attribute name="name">
-        <xsl:value-of select="@name"/>
-      </xsl:attribute>
-      <xsl:attribute name="date">
-        <xsl:value-of select="@run-date"/>
-      </xsl:attribute>
-      <xsl:attribute name="time">
-        <xsl:value-of select="@run-time"/>
-      </xsl:attribute>
-      <xsl:attribute name="total">
-        <xsl:value-of select="@total"/>
-      </xsl:attribute>
-      <xsl:attribute name="failures">
-        <xsl:value-of select="@failed"/>
-      </xsl:attribute>
-      <xsl:attribute name="not-run">
-        <xsl:value-of select="@skipped"/>
-      </xsl:attribute>
-      <test-suite>
-        <xsl:attribute name="name">
-          <xsl:value-of select="@name"/>
-        </xsl:attribute>
-        <xsl:attribute name="success">
-          <xsl:if test="@failed > 0">False</xsl:if>
-          <xsl:if test="@failed = 0">True</xsl:if>
-        </xsl:attribute>
-        <xsl:attribute name="time">
-          <xsl:value-of select="@time"/>
-        </xsl:attribute>
-        <results>
-          <xsl:apply-templates select="class"/>
-        </results>
-      </test-suite>
-    </test-results>
-  </xsl:template>
-
-  <xsl:template match="class">
-    <test-suite>
-      <xsl:attribute name="name">
-        <xsl:value-of select="@name"/>
-      </xsl:attribute>
-      <xsl:attribute name="success">
-        <xsl:if test="@failed > 0">False</xsl:if>
-        <xsl:if test="@failed = 0">True</xsl:if>
-      </xsl:attribute>
-      <xsl:attribute name="time">
-        <xsl:value-of select="@time"/>
-      </xsl:attribute>
-      <xsl:if test="failure">
-        <xsl:copy-of select="failure"/>
-      </xsl:if>
-      <xsl:if test="reason">
-        <reason>
-          <xsl:apply-templates select="reason"/>
-        </reason>
-      </xsl:if>
-      <results>
-        <xsl:apply-templates select="test"/>
-      </results>
-    </test-suite>
-  </xsl:template>
-
-  <xsl:template match="test">
-    <test-case>
-      <xsl:attribute name="name">
-        <xsl:value-of select="@name"/>
-      </xsl:attribute>
-      <xsl:attribute name="executed">
-        <xsl:if test="@result='Skip'">False</xsl:if>
-        <xsl:if test="@result!='Skip'">True</xsl:if>
-      </xsl:attribute>
-      <xsl:if test="@result!='Skip'">
-        <xsl:attribute name="success">
-          <xsl:if test="@result='Fail'">False</xsl:if>
-          <xsl:if test="@result='Pass'">True</xsl:if>
-        </xsl:attribute>
-      </xsl:if>
-      <xsl:if test="@time">
-        <xsl:attribute name="time">
-          <xsl:value-of select="@time"/>
-        </xsl:attribute>
-      </xsl:if>
-      <xsl:apply-templates select="traits"/>
-      <xsl:apply-templates select="failure"/>
-    </test-case>
-  </xsl:template>
-
-  <xsl:template match="traits">
-    <properties>
-      <xsl:apply-templates select="trait"/>
-    </properties>
-  </xsl:template>
-
-  <xsl:template match="trait">
-    <property>
-      <xsl:attribute name="name">
-        <xsl:value-of select="@name"/>
-      </xsl:attribute>
-      <xsl:attribute name="value">
-        <xsl:value-of select="@value"/>
-      </xsl:attribute>
-    </property>
-  </xsl:template>
-
-  <xsl:template match="failure">
-    <failure>
-      <xsl:copy-of select="node()"/>
-    </failure>
-  </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/tools/xUnit/xunit.console.exe b/tools/xUnit/xunit.console.exe
deleted file mode 100644
index 0ebd7330..00000000
Binary files a/tools/xUnit/xunit.console.exe and /dev/null differ
diff --git a/tools/xUnit/xunit.console.exe.config b/tools/xUnit/xunit.console.exe.config
deleted file mode 100644
index 15307fd9..00000000
--- a/tools/xUnit/xunit.console.exe.config
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<configuration>
-  <configSections>
-    <section name="xunit" type="Xunit.ConsoleClient.XunitConsoleConfigurationSection, xunit.console"/>
-  </configSections>
-
-  <xunit>
-    <transforms>
-      <add commandline="html" xslfile="HTML.xslt" description="output results to HTML file"/>
-      <add commandline="nunit" xslfile="NUnitXml.xslt" description="output results to NUnit-style XML file"/>
-    </transforms>
-  </xunit>
-
-  <startup>
-    
-  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
-</configuration>
diff --git a/tools/xUnit/xunit.runner.utility.dll b/tools/xUnit/xunit.runner.utility.dll
deleted file mode 100644
index a9c91fa3..00000000
Binary files a/tools/xUnit/xunit.runner.utility.dll and /dev/null differ
diff --git a/tools/xUnit/xunit.runner.utility.xml b/tools/xUnit/xunit.runner.utility.xml
deleted file mode 100644
index 3a92270d..00000000
--- a/tools/xUnit/xunit.runner.utility.xml
+++ /dev/null
@@ -1,1225 +0,0 @@
-<?xml version="1.0"?>
-<doc>
-    <assembly>
-        <name>xunit.runner.utility</name>
-    </assembly>
-    <members>
-        <member name="T:Guard">
-            <summary>
-            Guard class, used for guard clauses and argument validation
-            </summary>
-        </member>
-        <member name="M:Guard.ArgumentNotNull(System.String,System.Object)">
-            <summary/>
-        </member>
-        <member name="M:Guard.ArgumentNotNullOrEmpty(System.String,System.Collections.IEnumerable)">
-            <summary/>
-        </member>
-        <member name="M:Guard.ArgumentValid(System.String,System.String,System.Boolean)">
-            <summary/>
-        </member>
-        <member name="T:Xunit.MultiValueDictionary`2">
-            <summary>
-            A dictionary which contains multiple unique values for each key.
-            </summary>
-            <typeparam name="TKey">The type of the key.</typeparam>
-            <typeparam name="TValue">The type of the value.</typeparam>
-        </member>
-        <member name="M:Xunit.MultiValueDictionary`2.AddValue(`0,`1)">
-            <summary>
-            Adds the value for the given key. If the key does not exist in the
-            dictionary yet, it will add it.
-            </summary>
-            <param name="key">The key.</param>
-            <param name="value">The value.</param>
-        </member>
-        <member name="M:Xunit.MultiValueDictionary`2.Clear">
-            <summary>
-            Removes all keys and values from the dictionary.
-            </summary>
-        </member>
-        <member name="M:Xunit.MultiValueDictionary`2.Contains(`0,`1)">
-            <summary>
-            Determines whether the dictionary contains to specified key and value.
-            </summary>
-            <param name="key">The key.</param>
-            <param name="value">The value.</param>
-        </member>
-        <member name="M:Xunit.MultiValueDictionary`2.ForEach(System.Action{`0,`1})">
-            <summary>
-            Calls the delegate once for each key/value pair in the dictionary.
-            </summary>
-        </member>
-        <member name="M:Xunit.MultiValueDictionary`2.Remove(`0)">
-            <summary>
-            Removes the given key and all of its values.
-            </summary>
-        </member>
-        <member name="M:Xunit.MultiValueDictionary`2.RemoveValue(`0,`1)">
-            <summary>
-            Removes the given value from the given key. If this was the
-            last value for the key, then the key is removed as well.
-            </summary>
-            <param name="key">The key.</param>
-            <param name="value">The value.</param>
-        </member>
-        <member name="M:Xunit.MultiValueDictionary`2.GetEnumerator">
-            <inheritdoc/>
-        </member>
-        <member name="P:Xunit.MultiValueDictionary`2.Item(`0)">
-            <summary>
-            Gets the values for the given key.
-            </summary>
-        </member>
-        <member name="P:Xunit.MultiValueDictionary`2.Count">
-            <summary>
-            Gets the count of the keys in the dictionary.
-            </summary>
-        </member>
-        <member name="P:Xunit.MultiValueDictionary`2.Keys">
-            <summary>
-            Gets the keys.
-            </summary>
-        </member>
-        <member name="T:Xunit.ExecutorWrapper">
-            <summary>
-            Wraps calls to the Executor. Used by runners to perform version-resilient test
-            enumeration and execution.
-            </summary>
-        </member>
-        <member name="T:Xunit.IExecutorWrapper">
-            <summary>
-            Wraps calls to the Executor. Used by runners to perform version-resilient test
-            enumeration and execution.
-            </summary>
-        </member>
-        <member name="M:Xunit.IExecutorWrapper.EnumerateTests">
-            <summary>
-            Enumerates the tests in an assembly.
-            </summary>
-            <returns>The fully-formed assembly node of the XML</returns>
-        </member>
-        <member name="M:Xunit.IExecutorWrapper.GetAssemblyTestCount">
-            <summary>
-            Gets a count of the tests in the assembly.
-            </summary>
-            <returns>Returns the number of tests, if known; returns -1 if not known. May not represent
-            an exact count, but should be a best effort guess by the framework.</returns>
-        </member>
-        <member name="M:Xunit.IExecutorWrapper.RunAssembly(System.Predicate{System.Xml.XmlNode})">
-            <summary>
-            Runs all the tests in an assembly.
-            </summary>
-            <param name="callback">The callback which is called as each test/class/assembly is
-            finished, providing XML nodes that are part of the xUnit.net XML output format.
-            Test runs can be cancelled by returning false to the callback. If null, there are
-            no status callbacks (and cancellation isn't possible).</param>
-            <returns>Returns the fully-formed assembly node for the assembly that was just run.</returns>
-        </member>
-        <member name="M:Xunit.IExecutorWrapper.RunClass(System.String,System.Predicate{System.Xml.XmlNode})">
-            <summary>
-            Runs all the tests in the given class.
-            </summary>
-            <param name="type">The type.</param>
-            <param name="callback">The callback which is called as each test/class is
-            finished, providing XML nodes that are part of the xUnit.net XML output format.
-            Test runs can be cancelled by returning false to the callback. If null, there are
-            no status callbacks (and cancellation isn't possible).</param>
-            <returns>Returns the fully-formed class node for the class that was just run.</returns>
-        </member>
-        <member name="M:Xunit.IExecutorWrapper.RunTest(System.String,System.String,System.Predicate{System.Xml.XmlNode})">
-            <summary>
-            Runs a single test in a class.
-            </summary>
-            <param name="type">The type to run.</param>
-            <param name="method">The method to run.</param>
-            <param name="callback">The callback which is called as each test/class is
-            finished, providing XML nodes that are part of the xUnit.net XML output format.
-            Test runs can be cancelled by returning false to the callback. If null, there are
-            no status callbacks (and cancellation isn't possible).</param>
-            <returns>Returns the fully-formed class node for the class of the test that was just run.</returns>
-        </member>
-        <member name="M:Xunit.IExecutorWrapper.RunTests(System.String,System.Collections.Generic.List{System.String},System.Predicate{System.Xml.XmlNode})">
-            <summary>
-            Runs several tests in a single class.
-            </summary>
-            <param name="type">The type.</param>
-            <param name="methods">The methods to run.</param>
-            <param name="callback">The callback which is called as each test/class is
-            finished, providing XML nodes that are part of the xUnit.net XML output format.
-            Test runs can be cancelled by returning false to the callback. If null, there are
-            no status callbacks (and cancellation isn't possible).</param>
-            <returns>Returns the fully-formed class node for the class of the tests that were just run.</returns>
-        </member>
-        <member name="P:Xunit.IExecutorWrapper.AssemblyFilename">
-            <summary>
-            Gets the full pathname to the assembly under test.
-            </summary>
-        </member>
-        <member name="P:Xunit.IExecutorWrapper.ConfigFilename">
-            <summary>
-            Gets the full pathname to the configuration file.
-            </summary>
-        </member>
-        <member name="P:Xunit.IExecutorWrapper.XunitVersion">
-            <summary>
-            Gets the version of xunit.dll used by the test assembly.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.#cctor">
-            <summary>
-            Initializes the <see cref="T:Xunit.ExecutorWrapper"/> class.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.#ctor(System.String,System.String,System.Boolean)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.ExecutorWrapper"/> class.
-            </summary>
-            <param name="assemblyFileName">The assembly filename.</param>
-            <param name="configFileName">The config filename. If null, the default config filename will be used.</param>
-            <param name="shadowCopy">Set to true to enable shadow copying; false, otherwise.</param>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.Dispose">
-            <summary>
-            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.EnumerateTests">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.GetAssemblyTestCount">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.RunAssembly(System.Predicate{System.Xml.XmlNode})">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.RunClass(System.String,System.Predicate{System.Xml.XmlNode})">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.RunTest(System.String,System.String,System.Predicate{System.Xml.XmlNode})">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.RunTests(System.String,System.Collections.Generic.List{System.String},System.Predicate{System.Xml.XmlNode})">
-            <inheritdoc/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.AssemblyFilename">
-            <inheritdoc/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.ConfigFilename">
-            <inheritdoc/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.XunitVersion">
-            <inheritdoc/>
-        </member>
-        <member name="T:Xunit.ExecutorWrapper.IntCallbackHandler">
-            <summary>
-            THIS CLASS IS FOR INTERNAL USE ONLY.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.IntCallbackHandler.InitializeLifetimeService">
-            <summary/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.IntCallbackHandler.Result">
-            <summary/>
-        </member>
-        <member name="T:Xunit.ExecutorWrapper.IntCallbackHandlerWithIMessageSink">
-            <summary>
-            THIS CLASS IS FOR INTERNAL USE ONLY.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.IntCallbackHandlerWithIMessageSink.AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage,System.Runtime.Remoting.Messaging.IMessageSink)">
-            <summary/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.IntCallbackHandlerWithIMessageSink.SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)">
-            <summary/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.IntCallbackHandlerWithIMessageSink.NextSink">
-            <summary/>
-        </member>
-        <member name="T:Xunit.ExecutorWrapper.IntCallbackHandlerWithICallbackEventHandler">
-            <summary>
-            THIS CLASS IS FOR INTERNAL USE ONLY.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.IntCallbackHandlerWithICallbackEventHandler.GetCallbackResult">
-            <summary/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.IntCallbackHandlerWithICallbackEventHandler.RaiseCallbackEvent(System.String)">
-            <summary/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.IntCallbackHandlerWithICallbackEventHandler.InitializeLifetimeService">
-            <summary/>
-        </member>
-        <member name="T:Xunit.ExecutorWrapper.XmlNodeCallbackHandler">
-            <summary>
-            THIS CLASS IS FOR INTERNAL USE ONLY.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.XmlNodeCallbackHandler.#ctor(System.Predicate{System.Xml.XmlNode},System.String)">
-            <summary/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.XmlNodeCallbackHandler.InitializeLifetimeService">
-            <summary/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.XmlNodeCallbackHandler.Callback">
-            <summary/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.XmlNodeCallbackHandler.LastNode">
-            <summary/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.XmlNodeCallbackHandler.LastNodeName">
-            <summary/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.XmlNodeCallbackHandler.LastNodeArrived">
-            <summary/>
-        </member>
-        <member name="T:Xunit.ExecutorWrapper.XmlNodeCallbackHandlerWithIMessageSink">
-            <summary>
-            THIS CLASS IS FOR INTERNAL USE ONLY.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.XmlNodeCallbackHandlerWithIMessageSink.#ctor(System.Predicate{System.Xml.XmlNode},System.String)">
-            <summary/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.XmlNodeCallbackHandlerWithIMessageSink.AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage,System.Runtime.Remoting.Messaging.IMessageSink)">
-            <summary/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.XmlNodeCallbackHandlerWithIMessageSink.SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage)">
-            <summary/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.XmlNodeCallbackHandlerWithIMessageSink.NextSink">
-            <summary/>
-        </member>
-        <member name="T:Xunit.ExecutorWrapper.XmlNodeCallbackHandlerWithICallbackEventHandler">
-            <summary>
-            THIS CLASS IS FOR INTERNAL USE ONLY.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.XmlNodeCallbackHandlerWithICallbackEventHandler.#ctor(System.Predicate{System.Xml.XmlNode},System.String)">
-            <summary/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.XmlNodeCallbackHandlerWithICallbackEventHandler.RaiseCallbackEvent(System.String)">
-            <summary/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.XmlNodeCallbackHandlerWithICallbackEventHandler.GetCallbackResult">
-            <summary/>
-        </member>
-        <member name="T:Xunit.ExecutorWrapper.OutgoingMessage">
-            <summary>
-            THIS CLASS IS FOR INTERNAL USE ONLY.
-            </summary>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.OutgoingMessage.#ctor(System.Object)">
-            <summary/>
-        </member>
-        <member name="M:Xunit.ExecutorWrapper.OutgoingMessage.InitializeLifetimeService">
-            <summary/>
-        </member>
-        <member name="P:Xunit.ExecutorWrapper.OutgoingMessage.Properties">
-            <summary/>
-        </member>
-        <member name="T:Xunit.ITestMethodRunnerCallback">
-            <summary>
-            The callback object which receives real-time status notifications from the
-            test runner.
-            </summary>
-        </member>
-        <member name="M:Xunit.ITestMethodRunnerCallback.AssemblyFinished(Xunit.TestAssembly,System.Int32,System.Int32,System.Int32,System.Double)">
-            <summary>
-            Called when the assembly has finished running.
-            </summary>
-            <param name="testAssembly">The test assembly.</param>
-            <param name="total">The total number of tests run.</param>
-            <param name="failed">The number of failed tests.</param>
-            <param name="skipped">The number of skipped tests.</param>
-            <param name="time">The time taken to run, in seconds.</param>
-        </member>
-        <member name="M:Xunit.ITestMethodRunnerCallback.AssemblyStart(Xunit.TestAssembly)">
-            <summary>
-            Called when the assembly has started running.
-            </summary>
-            <param name="testAssembly">The test assembly.</param>
-        </member>
-        <member name="M:Xunit.ITestMethodRunnerCallback.ClassFailed(Xunit.TestClass,System.String,System.String,System.String)">
-            <summary>
-            Called when a class failure is encountered (i.e., when a fixture from
-            IUseFixture throws an exception during construction or <see cref="M:System.IDisposable.Dispose"/>.
-            </summary>
-            <param name="testClass">The test class.</param>
-            <param name="exceptionType">The full type name of the exception.</param>
-            <param name="message">The exception message.</param>
-            <param name="stackTrace">The exception stack trace.</param>
-            <returns></returns>
-        </member>
-        <member name="M:Xunit.ITestMethodRunnerCallback.ExceptionThrown(Xunit.TestAssembly,System.Exception)">
-            <summary>
-            Called when an exception is thrown (i.e., a catastrophic failure of the testing system).
-            </summary>
-            <param name="testAssembly">The test assembly.</param>
-            <param name="exception">The exception that was thrown.</param>
-        </member>
-        <member name="M:Xunit.ITestMethodRunnerCallback.TestFinished(Xunit.TestMethod)">
-            <summary>
-            Called when a test has finished running, regardless of what the result was.
-            </summary>
-            <param name="testMethod">The test method.</param>
-            <returns>Return true to continue running tests; return false to stop the test run.</returns>
-        </member>
-        <member name="M:Xunit.ITestMethodRunnerCallback.TestStart(Xunit.TestMethod)">
-            <summary>
-            Called when a test has started running.
-            </summary>
-            <param name="testMethod">The test method.</param>
-            <returns>Return true to continue running tests; return false to stop the test run.</returns>
-        </member>
-        <member name="T:Xunit.MultiAssemblyTestEnvironment">
-            <summary>
-            Represents the ability to load and unload test assemblies, as well as enumerate
-            the test assemblies, the test methods, and run tests.
-            </summary>
-        </member>
-        <member name="T:Xunit.ITestMethodEnumerator">
-            <summary>
-            Represents the ability to enumerate and filter test methods.
-            </summary>
-        </member>
-        <member name="M:Xunit.ITestMethodEnumerator.EnumerateTestMethods">
-            <summary>
-            Enumerates all test methods.
-            </summary>
-        </member>
-        <member name="M:Xunit.ITestMethodEnumerator.EnumerateTestMethods(System.Predicate{Xunit.TestMethod})">
-            <summary>
-            Enumerates test methods which pass the given filter.
-            </summary>
-            <param name="filter">The test method filter.</param>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.MultiAssemblyTestEnvironment"/> class.
-            </summary>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.Dispose">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.EnumerateTestAssemblies">
-            <summary>
-            Enumerates the test assemblies in the environment.
-            </summary>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.EnumerateTestMethods">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.EnumerateTestMethods(System.Predicate{Xunit.TestMethod})">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.EnumerateTraits">
-            <summary>
-            Enumerates the traits across all the loaded assemblies.
-            </summary>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.Load(System.String)">
-            <summary>
-            Loads the specified assembly, using the default configuration file.
-            </summary>
-            <param name="assemblyFileName">The assembly filename.</param>
-            <returns>The <see cref="T:Xunit.TestAssembly"/> which represents the newly
-            loaded test assembly.</returns>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.Load(System.String,System.String)">
-            <summary>
-            Loads the specified assembly using the specified configuration file.
-            </summary>
-            <param name="assemblyFileName">The assembly filename.</param>
-            <param name="configFileName">The config filename.</param>
-            <returns>The <see cref="T:Xunit.TestAssembly"/> which represents the newly
-            loaded test assembly.</returns>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.Load(System.String,System.String,System.Boolean)">
-            <summary>
-            Loads the specified assembly using the specified configuration file.
-            </summary>
-            <param name="assemblyFileName">The assembly filename.</param>
-            <param name="configFileName">The config filename.</param>
-            <param name="shadowCopy">Whether the DLLs should be shadow copied.</param>
-            <returns>The <see cref="T:Xunit.TestAssembly"/> which represents the newly
-            loaded test assembly.</returns>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.Load(Xunit.IExecutorWrapper)">
-            <summary>
-            Adds the assembly loaded into the given <see cref="T:Xunit.IExecutorWrapper"/>
-            into the environment.
-            </summary>
-            <param name="executorWrapper">The executor wrapper.</param>
-            <returns>The <see cref="T:Xunit.TestAssembly"/> which represents the newly
-            loaded test assembly.</returns>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.Run(System.Collections.Generic.IEnumerable{Xunit.TestMethod},Xunit.ITestMethodRunnerCallback)">
-            <summary>
-            Runs the specified test methods.
-            </summary>
-            <param name="testMethods">The test methods to run.</param>
-            <param name="callback">The run status information callback.</param>
-            <returns>Returns the result as XML.</returns>
-        </member>
-        <member name="M:Xunit.MultiAssemblyTestEnvironment.Unload(Xunit.TestAssembly)">
-            <summary>
-            Unloads the specified assembly.
-            </summary>
-            <param name="assembly">The assembly to unload.</param>
-        </member>
-        <member name="P:Xunit.MultiAssemblyTestEnvironment.TestAssemblies">
-            <summary>
-            The test assemblies loaded into the environment.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestFailedResult">
-            <summary>
-            Represents a failed test run in the object model.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestResult">
-            <summary>
-            Base class for all test results in the object model.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestResult.#ctor(System.Double,System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.TestResult"/> class.
-            </summary>
-            <param name="duration">The duration the test took to run. For skipped tests, should be 0.0.</param>
-            <param name="displayName">The display name of the test result.</param>
-        </member>
-        <member name="P:Xunit.TestResult.DisplayName">
-            <summary>
-            Gets the display name of the test result.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestResult.Duration">
-            <summary>
-            Gets the duration the test took to run.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestFailedResult.#ctor(System.Double,System.String,System.String,System.String,System.String,System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.TestFailedResult"/> class.
-            </summary>
-            <param name="duration">The duration the test took to run.</param>
-            <param name="displayName">The display name of the test result.</param>
-            <param name="output">The output that was captured during the test run.</param>
-            <param name="exceptionType">Type of the exception.</param>
-            <param name="exceptionMessage">The exception message.</param>
-            <param name="exceptionStackTrace">The exception stack trace.</param>
-        </member>
-        <member name="P:Xunit.TestFailedResult.Output">
-            <summary>
-            Gets the output that was captured during the test run.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestFailedResult.ExceptionType">
-            <summary>
-            Gets the type of the exception.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestFailedResult.ExceptionMessage">
-            <summary>
-            Gets the exception message.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestFailedResult.ExceptionStackTrace">
-            <summary>
-            Gets the exception stack trace.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestSkippedResult">
-            <summary>
-            Represents a skipped test run in the object model.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestSkippedResult.#ctor(System.String,System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.TestSkippedResult"/> class.
-            </summary>
-            <param name="displayName">The display name of the test result.</param>
-            <param name="reason">The skip reason.</param>
-        </member>
-        <member name="P:Xunit.TestSkippedResult.Reason">
-            <summary>
-            Gets the skip reason.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestClassCallbackDispatcher">
-            <summary>
-            Acts as an <see cref="T:Xunit.IRunnerLogger"/> and adapts the callback messages
-            into calls to an instance of <see cref="T:Xunit.ITestMethodRunnerCallback"/>.
-            </summary>
-        </member>
-        <member name="T:Xunit.IRunnerLogger">
-            <summary>
-            Represents a logger used by <see cref="T:Xunit.TestRunner"/> and <see cref="T:Xunit.XmlLoggerAdapter"/>.
-            </summary>
-        </member>
-        <member name="M:Xunit.IRunnerLogger.AssemblyFinished(System.String,System.Int32,System.Int32,System.Int32,System.Double)">
-            <summary>
-            Called when the assembly has finished running.
-            </summary>
-            <param name="assemblyFileName">The assembly filename.</param>
-            <param name="total">The total number of tests run.</param>
-            <param name="failed">The number of failed tests.</param>
-            <param name="skipped">The number of skipped tests.</param>
-            <param name="time">The time taken to run, in seconds.</param>
-        </member>
-        <member name="M:Xunit.IRunnerLogger.AssemblyStart(System.String,System.String,System.String)">
-            <summary>
-            Called when the assembly has started running.
-            </summary>
-            <param name="assemblyFileName">The assembly filename.</param>
-            <param name="configFileName">The configuration filename, if given; null, otherwise.</param>
-            <param name="xunitVersion">The version of xunit.dll.</param>
-        </member>
-        <member name="M:Xunit.IRunnerLogger.ClassFailed(System.String,System.String,System.String,System.String)">
-            <summary>
-            Called when a class failure is encountered (i.e., when a fixture from
-            IUseFixture throws an exception during construction or <see cref="M:System.IDisposable.Dispose"/>.
-            </summary>
-            <param name="className">The full type name of the class.</param>
-            <param name="exceptionType">The full type name of the exception.</param>
-            <param name="message">The exception message.</param>
-            <param name="stackTrace">The exception stack trace.</param>
-            <returns></returns>
-        </member>
-        <member name="M:Xunit.IRunnerLogger.ExceptionThrown(System.String,System.Exception)">
-            <summary>
-            Called when an exception is thrown (i.e., a catastrophic failure of the testing system).
-            </summary>
-            <param name="assemblyFileName">The assembly filename.</param>
-            <param name="exception">The exception that was thrown.</param>
-        </member>
-        <member name="M:Xunit.IRunnerLogger.TestFailed(System.String,System.String,System.String,System.Double,System.String,System.String,System.String,System.String)">
-            <summary>
-            Called when a test fails.
-            </summary>
-            <param name="name">The description name of the test.</param>
-            <param name="type">The full type name of the test class.</param>
-            <param name="method">The name of the method.</param>
-            <param name="duration">The time spent running the test, in seconds.</param>
-            <param name="output">The output of the test during its run.</param>
-            <param name="exceptionType">The full type name of the exception.</param>
-            <param name="message">The exception message.</param>
-            <param name="stackTrace">The exception stack trace.</param>
-        </member>
-        <member name="M:Xunit.IRunnerLogger.TestFinished(System.String,System.String,System.String)">
-            <summary>
-            Called when a test has finished running, regardless of what the result was.
-            </summary>
-            <param name="name">The description name of the test.</param>
-            <param name="type">The full type name of the test class.</param>
-            <param name="method">The name of the method.</param>
-            <returns>Return true to continue running tests; return false to stop the test run.</returns>
-        </member>
-        <member name="M:Xunit.IRunnerLogger.TestPassed(System.String,System.String,System.String,System.Double,System.String)">
-            <summary>
-            Called when a test has passed.
-            </summary>
-            <param name="name">The description name of the test.</param>
-            <param name="type">The full type name of the test class.</param>
-            <param name="method">The name of the method.</param>
-            <param name="duration">The time spent running the test, in seconds.</param>
-            <param name="output">The output of the test during its run.</param>
-        </member>
-        <member name="M:Xunit.IRunnerLogger.TestSkipped(System.String,System.String,System.String,System.String)">
-            <summary>
-            Called when a test was finished.
-            </summary>
-            <param name="name">The description name of the test.</param>
-            <param name="type">The full type name of the test class.</param>
-            <param name="method">The name of the method.</param>
-            <param name="reason">The skip reason.</param>
-        </member>
-        <member name="M:Xunit.IRunnerLogger.TestStart(System.String,System.String,System.String)">
-            <summary>
-            Called when a test has started running.
-            </summary>
-            <param name="name">The description name of the test.</param>
-            <param name="type">The full type name of the test class.</param>
-            <param name="method">The name of the method.</param>
-            <returns>Return true to continue running tests; return false to stop the test run.</returns>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.#ctor(Xunit.TestClass,Xunit.ITestMethodRunnerCallback)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.TestClassCallbackDispatcher"/> class.
-            </summary>
-            <param name="testClass">The test class.</param>
-            <param name="callback">The run status information callback.</param>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.AssemblyFinished(System.String,System.Int32,System.Int32,System.Int32,System.Double)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.AssemblyStart(System.String,System.String,System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.ClassFailed(System.String,System.String,System.String,System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.ExceptionThrown(System.String,System.Exception)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.TestFailed(System.String,System.String,System.String,System.Double,System.String,System.String,System.String,System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.TestFinished(System.String,System.String,System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.TestPassed(System.String,System.String,System.String,System.Double,System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.TestSkipped(System.String,System.String,System.String,System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClassCallbackDispatcher.TestStart(System.String,System.String,System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="T:Xunit.TestPassedResult">
-            <summary>
-            Represents a passed test run in the object model.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestPassedResult.#ctor(System.Double,System.String,System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.TestPassedResult"/> class.
-            </summary>
-            <param name="duration">The duration the test took to run.</param>
-            <param name="displayName">The display name of the test result.</param>
-            <param name="output">The output that was captured during the test run.</param>
-        </member>
-        <member name="P:Xunit.TestPassedResult.Output">
-            <summary>
-            Gets the output that was captured during the test run.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestStatus">
-            <summary>
-            Indicates the composite test method status
-            </summary>
-        </member>
-        <member name="F:Xunit.TestStatus.NotRun">
-            <summary>
-            The method has not been run
-            </summary>
-        </member>
-        <member name="F:Xunit.TestStatus.Passed">
-            <summary>
-            All test results for the last run passed
-            </summary>
-        </member>
-        <member name="F:Xunit.TestStatus.Failed">
-            <summary>
-            At least one test result for the last run failed
-            </summary>
-        </member>
-        <member name="F:Xunit.TestStatus.Skipped">
-            <summary>
-            At least one test result for the last run was skipped, and none failed
-            </summary>
-        </member>
-        <member name="T:Xunit.XunitFilters">
-            <summary>
-            Represents a set of filters for an <see cref="T:Xunit.XunitProject"/>.
-            </summary>
-        </member>
-        <member name="M:Xunit.XunitFilters.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.XunitFilters"/> class.
-            </summary>
-        </member>
-        <member name="M:Xunit.XunitFilters.Filter(Xunit.TestMethod)">
-            <summary>
-            Filters the given method using the defined filter values.
-            </summary>
-            <param name="method">The methods to filter.</param>
-            <returns>Returns true if the method passed the filter; return false otherwise.</returns>
-        </member>
-        <member name="P:Xunit.XunitFilters.ExcludedTraits">
-            <summary>
-            Gets the set of trait filters for tests to exclude.
-            </summary>
-        </member>
-        <member name="P:Xunit.XunitFilters.IncludedTraits">
-            <summary>
-            Gets the set of trait filters for tests to include.
-            </summary>
-        </member>
-        <member name="P:Xunit.XunitFilters.IsFiltered">
-            <summary>
-            Gets a value indicating whether there are any active filters.
-            </summary>
-        </member>
-        <member name="T:Xunit.XunitProject">
-            <summary>
-            Represents an xUnit Test Project file (.xunit file)
-            </summary>
-        </member>
-        <member name="M:Xunit.XunitProject.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.XunitProject"/> class.
-            </summary>
-        </member>
-        <member name="M:Xunit.XunitProject.AddAssembly(Xunit.XunitProjectAssembly)">
-            <summary>
-            Adds an assembly to the project
-            </summary>
-            <param name="assembly">The assembly to be added</param>
-        </member>
-        <member name="M:Xunit.XunitProject.Load(System.String)">
-            <summary>
-            Loads an xUnit.net Test Project file from disk.
-            </summary>
-            <param name="fileName">The test project filename</param>
-        </member>
-        <member name="M:Xunit.XunitProject.RemoveAssembly(Xunit.XunitProjectAssembly)">
-            <summary>
-            Removes assembly from the assembly list
-            </summary>
-            <param name="assembly">The assembly to be removed</param>
-        </member>
-        <member name="M:Xunit.XunitProject.Save">
-            <summary>
-            Saves the xUnit.net Test Project file to disk using the project's filename.
-            </summary>
-        </member>
-        <member name="M:Xunit.XunitProject.SaveAs(System.String)">
-            <summary>
-            Saves the xUnit.net Test Project file to disk using the provided filename.
-            The projects filename is updated to match this new name.
-            </summary>
-            <param name="outputFileName">The test project filename</param>
-        </member>
-        <member name="P:Xunit.XunitProject.Assemblies">
-            <summary>
-            Gets or sets the assemblies in the project.
-            </summary>
-        </member>
-        <member name="P:Xunit.XunitProject.Filename">
-            <summary>
-            Gets or set the filename of the project.
-            </summary>
-        </member>
-        <member name="P:Xunit.XunitProject.Filters">
-            <summary>
-            Gets the filters applied to this project.
-            </summary>
-        </member>
-        <member name="P:Xunit.XunitProject.IsDirty">
-            <summary>
-            Gets or sets a flag which indicates if this project has been modified since
-            the last time it was loaded or saved.
-            </summary>
-        </member>
-        <member name="T:Xunit.XunitProjectAssembly">
-            <summary>
-            Represents an assembly in an <see cref="T:Xunit.XunitProject"/>.
-            </summary>
-        </member>
-        <member name="M:Xunit.XunitProjectAssembly.#ctor">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.XunitProjectAssembly"/> class.
-            </summary>
-        </member>
-        <member name="P:Xunit.XunitProjectAssembly.AssemblyFilename">
-            <summary>
-            Gets or sets the assembly filename.
-            </summary>
-        </member>
-        <member name="P:Xunit.XunitProjectAssembly.ConfigFilename">
-            <summary>
-            Gets or sets the config filename.
-            </summary>
-        </member>
-        <member name="P:Xunit.XunitProjectAssembly.ShadowCopy">
-            <summary>
-            Gets or sets a value indicating whether to shadow copy the assembly
-            when running the tests.
-            </summary>
-            <remarks>
-            The xUnit.net GUI runner does not support this field.
-            </remarks>
-        </member>
-        <member name="P:Xunit.XunitProjectAssembly.Output">
-            <summary>
-            Gets or sets the output filenames. The dictionary key is the type
-            of the file to be output; the dictionary value is the filename to
-            write the output to.
-            </summary>
-            <remarks>
-            The xUnit.net GUI runner does not support this field. The MSBuild
-            runner only supports output of type 'xml', 'html', and 'nunit'.
-            </remarks>
-        </member>
-        <member name="T:Xunit.ITestRunner">
-            <summary>
-            Interface which represents a high level test runner.
-            </summary>
-        </member>
-        <member name="M:Xunit.ITestRunner.RunAssembly">
-            <summary>
-            Executes the tests in the assembly.
-            </summary>
-            <returns>Returns true if there were no failures; return false otherwise.</returns>
-        </member>
-        <member name="M:Xunit.ITestRunner.RunAssembly(System.Collections.Generic.IEnumerable{Xunit.IResultXmlTransform})">
-            <summary>
-            Executes the tests in the assembly, and then executes the transforms with the
-            resulting assembly XML.
-            </summary>
-            <param name="transforms">The transforms to execute.</param>
-            <returns>Returns true if there were no failures; return false otherwise.</returns>
-        </member>
-        <member name="M:Xunit.ITestRunner.RunClass(System.String)">
-            <summary>
-            Runs the class.
-            </summary>
-            <param name="type">The type.</param>
-            <returns></returns>
-        </member>
-        <member name="M:Xunit.ITestRunner.RunTest(System.String,System.String)">
-            <summary>
-            Runs a single test in a test class.
-            </summary>
-            <param name="type">The full name of the class.</param>
-            <param name="method">The name of the method.</param>
-        </member>
-        <member name="M:Xunit.ITestRunner.RunTests(System.String,System.Collections.Generic.List{System.String})">
-            <summary>
-            Runs the list of tests in a test class.
-            </summary>
-            <param name="type">The full name of the class.</param>
-            <param name="methods">The names of the methods to run.</param>
-        </member>
-        <member name="T:Xunit.TestAssembly">
-            <summary>
-            Represents a single test assembly with test classes.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestAssembly.#ctor(Xunit.IExecutorWrapper,System.Collections.Generic.IEnumerable{Xunit.TestClass})">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.TestAssembly"/> class.
-            </summary>
-            <param name="executorWrapper">The executor wrapper.</param>
-            <param name="testClasses">The test classes.</param>
-        </member>
-        <member name="M:Xunit.TestAssembly.Dispose">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestAssembly.EnumerateClasses">
-            <summary>
-            Enumerates the test classes in the assembly.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestAssembly.EnumerateTestMethods">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestAssembly.EnumerateTestMethods(System.Predicate{Xunit.TestMethod})">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestAssembly.Run(System.Collections.Generic.IEnumerable{Xunit.TestMethod},Xunit.ITestMethodRunnerCallback)">
-            <summary>
-            Runs the specified test methods.
-            </summary>
-            <param name="testMethods">The test methods to run.</param>
-            <param name="callback">The run status information callback.</param>
-            <returns>Returns the result as XML.</returns>
-        </member>
-        <member name="P:Xunit.TestAssembly.AssemblyFilename">
-            <summary>
-            Gets the assembly filename.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestAssembly.ConfigFilename">
-            <summary>
-            Gets the config filename.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestAssembly.ExecutorWrapper">
-            <summary>
-            Gets the executor wrapper.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestAssembly.XunitVersion">
-            <summary>
-            Gets the version of xunit.dll that the tests are linked against.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestClass">
-            <summary>
-            Represents a single class with test methods.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestClass.#ctor(System.String,System.Collections.Generic.IEnumerable{Xunit.TestMethod})">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.TestClass"/> class.
-            </summary>
-            <param name="typeName">The namespace-qualified type name that
-            this class represents.</param>
-            <param name="testMethods">The test methods inside this test class.</param>
-        </member>
-        <member name="M:Xunit.TestClass.EnumerateTestMethods">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClass.EnumerateTestMethods(System.Predicate{Xunit.TestMethod})">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestClass.Run(System.Collections.Generic.IEnumerable{Xunit.TestMethod},Xunit.ITestMethodRunnerCallback)">
-            <summary>
-            Runs the specified test methods.
-            </summary>
-            <param name="testMethodsToRun">The test methods to run.</param>
-            <param name="callback">The run status information callback.</param>
-            <returns>Returns the result as XML.</returns>
-        </member>
-        <member name="M:Xunit.TestClass.RunTests(System.Collections.Generic.List{System.String},Xunit.ITestMethodRunnerCallback)">
-            <summary>
-            Runs the specified tests in the given type, calling the callback as appropriate.
-            This override point exists primarily for unit testing purposes.
-            </summary>
-            <param name="methods">The test methods to run</param>
-            <param name="callback">The run status information callback.</param>
-        </member>
-        <member name="P:Xunit.TestClass.TestAssembly">
-            <summary>
-            Gets the test assembly that this class belongs to.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestClass.TypeName">
-            <summary>
-            Gets the namespace-qualified type name of this class.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestMethod">
-            <summary>
-            Represents a single test method.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestMethod.#ctor(System.String,System.String,Xunit.MultiValueDictionary{System.String,System.String})">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.TestMethod"/> class.
-            </summary>
-            <param name="methodName">The method name.</param>
-            <param name="displayName">The method's display name.</param>
-            <param name="traits">The method's traits.</param>
-        </member>
-        <member name="P:Xunit.TestMethod.DisplayName">
-            <summary>
-            Gets the method's display name.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestMethod.MethodName">
-            <summary>
-            Gets the method's name.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestMethod.RunResults">
-            <summary>
-            Gets the run results for the last run.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestMethod.RunStatus">
-            <summary>
-            Gets the composite run status for all the results of the last run.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestMethod.TestClass">
-            <summary>
-            Gets the test class this test method belongs to.
-            </summary>
-        </member>
-        <member name="P:Xunit.TestMethod.Traits">
-            <summary>
-            Gets the method's traits.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestRunnerResult">
-            <summary>
-            The result of a test run via <see cref="T:Xunit.TestRunner"/>.
-            </summary>
-        </member>
-        <member name="F:Xunit.TestRunnerResult.Passed">
-            <summary>
-            All tests passed, with no class-level failures
-            </summary>
-        </member>
-        <member name="F:Xunit.TestRunnerResult.Failed">
-            <summary>
-            At least one test failed, or there was a class-level failure
-            </summary>
-        </member>
-        <member name="F:Xunit.TestRunnerResult.NoTests">
-            <summary>
-            There were no tests to run
-            </summary>
-        </member>
-        <member name="T:Xunit.IResultXmlTransform">
-            <summary>
-            Represents a transformation of the resulting assembly XML into some output format.
-            </summary>
-        </member>
-        <member name="M:Xunit.IResultXmlTransform.Transform(System.String)">
-            <summary>
-            Transforms the given assembly XML into the destination format.
-            </summary>
-            <param name="xml">The assembly XML.</param>
-        </member>
-        <member name="P:Xunit.IResultXmlTransform.OutputFilename">
-            <summary>
-            Gets the output filename, if known; returns null if the output isn't done to file.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestRunner">
-            <summary>
-            Runs tests in an assembly, and transforms the XML results into calls to
-            the provided <see cref="T:Xunit.IRunnerLogger"/>.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestRunner.#ctor(Xunit.IExecutorWrapper,Xunit.IRunnerLogger)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.TestRunner"/> class.
-            </summary>
-            <param name="executorWrapper">The executor wrapper.</param>
-            <param name="logger">The logger.</param>
-        </member>
-        <member name="M:Xunit.TestRunner.RunAssembly">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestRunner.RunAssembly(System.Collections.Generic.IEnumerable{Xunit.IResultXmlTransform})">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestRunner.RunClass(System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestRunner.RunTest(System.String,System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="M:Xunit.TestRunner.RunTests(System.String,System.Collections.Generic.List{System.String})">
-            <inheritdoc/>
-        </member>
-        <member name="T:Xunit.NullTransformer">
-            <summary>
-            An implementation of <see cref="T:Xunit.IResultXmlTransform"/> which writes the
-            XML to a file without any transformation applied.
-            </summary>
-        </member>
-        <member name="M:Xunit.NullTransformer.#ctor(System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.NullTransformer"/> class.
-            </summary>
-            <param name="fileName">The output filename.</param>
-        </member>
-        <member name="M:Xunit.NullTransformer.Transform(System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="P:Xunit.NullTransformer.OutputFilename">
-            <inheritdoc/>
-        </member>
-        <member name="T:Xunit.XslStreamTransformer">
-            <summary>
-            An implementation of <see cref="T:Xunit.IResultXmlTransform"/> which writes the
-            XML to a file after applying the XSL stylesheet in the given stream.
-            </summary>
-        </member>
-        <member name="M:Xunit.XslStreamTransformer.#ctor(System.String,System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.XslStreamTransformer"/> class.
-            </summary>
-            <param name="xslFileName">The XSL filename.</param>
-            <param name="outputFileName">The output filename.</param>
-        </member>
-        <member name="M:Xunit.XslStreamTransformer.#ctor(System.IO.Stream,System.String)">
-            <summary>
-            Initializes a new instance of the <see cref="T:Xunit.XslStreamTransformer"/> class.
-            </summary>
-            <param name="xslStream">The stream with the XSL stylesheet.</param>
-            <param name="outputFileName">The output filename.</param>
-        </member>
-        <member name="M:Xunit.XslStreamTransformer.Transform(System.String)">
-            <inheritdoc/>
-        </member>
-        <member name="P:Xunit.XslStreamTransformer.OutputFilename">
-            <inheritdoc/>
-        </member>
-        <member name="P:Xunit.XslStreamTransformer.XslFilename">
-            <summary>
-            Gets or sets the XSL filename.
-            </summary>
-        </member>
-        <member name="P:Xunit.XslStreamTransformer.XslStream">
-            <summary>
-            Gets or sets the XSL stream.
-            </summary>
-        </member>
-        <member name="T:Xunit.TestAssemblyBuilder">
-            <summary>
-            Responsible for building <see cref="T:Xunit.TestAssembly"/> instances. Uses an instance
-            of <see cref="T:Xunit.IExecutorWrapper"/> to interrogate the list of available tests
-            and create the entire object model tree.
-            </summary>
-        </member>
-        <member name="M:Xunit.TestAssemblyBuilder.Build(Xunit.IExecutorWrapper)">
-            <summary>
-            Creates a <see cref="T:Xunit.TestAssembly"/> which is a complete object model over
-            the tests inside of instance of <see cref="T:Xunit.IExecutorWrapper"/>.
-            </summary>
-            <param name="executorWrapper">The executor wrapper</param>
-            <returns>The fully populated object model</returns>
-        </member>
-        <member name="T:Xunit.XmlLoggerAdapter">
-            <summary>
-            Parses the XML nodes from the version resilient runner facility and converts
-            them into calls against the provided <see cref="T:Xunit.IRunnerLogger"/>.
-            </summary>
-        </member>
-        <member name="M:Xunit.XmlLoggerAdapter.LogNode(System.Xml.XmlNode,Xunit.IRunnerLogger)">
-            <summary>
-            Logs a result XML node. Maybe be any kind of XML node.
-            </summary>
-            <param name="node">The node to be logged.</param>
-            <param name="logger">The logger.</param>
-            <returns>Returns true if the user wishes to continue running tests; returns false otherwise.</returns>
-        </member>
-        <member name="M:Xunit.XmlLoggerAdapter.LogAssemblyNode(System.Xml.XmlNode,Xunit.IRunnerLogger)">
-            <summary>
-            Logs the assembly node by calling <see cref="M:Xunit.IRunnerLogger.AssemblyFinished(System.String,System.Int32,System.Int32,System.Int32,System.Double)"/>.
-            </summary>
-            <param name="assemblyNode">The assembly node.</param>
-            <param name="logger">The logger.</param>
-        </member>
-        <member name="M:Xunit.XmlLoggerAdapter.LogClassNode(System.Xml.XmlNode,Xunit.IRunnerLogger)">
-            <summary>
-            Logs the class node by calling <see cref="M:Xunit.IRunnerLogger.ClassFailed(System.String,System.String,System.String,System.String)"/> (if the class failed).
-            The exception type was added in xUnit.net 1.1, so when the test assembly is linked against
-            xUnit.net versions prior to 1.1, the exception type will be null.
-            </summary>
-            <param name="classNode">The class node.</param>
-            <param name="logger">The logger.</param>
-            <returns>Returns true if the user wishes to continue running tests; returns false otherwise.</returns>
-        </member>
-        <member name="M:Xunit.XmlLoggerAdapter.LogStartNode(System.Xml.XmlNode,Xunit.IRunnerLogger)">
-            <summary>
-            Logs the start node by calling <see cref="M:Xunit.IRunnerLogger.TestStart(System.String,System.String,System.String)"/>. The start node was added
-            in xUnit.net 1.1, so it will only be present when the test assembly is linked against xunit.dll
-            version 1.1 or later.
-            </summary>
-            <param name="startNode">The start node.</param>
-            <param name="logger">The logger.</param>
-            <returns>Returns true if the user wishes to continue running tests; returns false otherwise.</returns>
-        </member>
-        <member name="M:Xunit.XmlLoggerAdapter.LogTestNode(System.Xml.XmlNode,Xunit.IRunnerLogger)">
-            <summary>
-            Logs the test node by calling <see cref="M:Xunit.IRunnerLogger.TestFinished(System.String,System.String,System.String)"/>. It will also call
-            <see cref="M:Xunit.IRunnerLogger.TestPassed(System.String,System.String,System.String,System.Double,System.String)"/>, <see cref="M:Xunit.IRunnerLogger.TestFailed(System.String,System.String,System.String,System.Double,System.String,System.String,System.String,System.String)"/>, or
-            <see cref="M:Xunit.IRunnerLogger.TestSkipped(System.String,System.String,System.String,System.String)"/> as appropriate.
-            </summary>
-            <param name="testNode">The test node.</param>
-            <param name="logger">The logger.</param>
-            <returns>Returns true if the user wishes to continue running tests; returns false otherwise.</returns>
-        </member>
-    </members>
-</doc>
