This commit is contained in:
Chris Maddock 2017-01-06 20:26:12 +00:00
Родитель 677973e071
Коммит ab94ca7e82
16 изменённых файлов: 343 добавлений и 115 удалений

Просмотреть файл

@ -54,6 +54,7 @@
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Xamarin.Forms.2.3.3.168\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
<Private>True</Private>

Просмотреть файл

@ -4,6 +4,6 @@
<NuGetPackageRoot>$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
</PropertyGroup>
<ImportGroup>
<Import Project="$(NuGetPackageRoot)\Xamarin.Forms\2.3.3.168\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets" Condition="Exists('$(NuGetPackageRoot)\Xamarin.Forms\2.3.3.168\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" />
<Import Project="$(NuGetPackageRoot)xamarin.forms\2.3.3.168\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets" Condition="Exists('$(NuGetPackageRoot)xamarin.forms\2.3.3.168\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" />
</ImportGroup>
</Project>

Просмотреть файл

@ -1,4 +1,27 @@
using NUnit.Framework.Interfaces;
// ***********************************************************************
// Copyright (c) 2017 Charlie Poole
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ***********************************************************************
using NUnit.Framework.Interfaces;
using Xamarin.Forms;
namespace NUnit.Runner.Extensions
@ -10,18 +33,18 @@ namespace NUnit.Runner.Extensions
/// </summary>
/// <param name="result"></param>
/// <returns></returns>
public static Color Color(this ITestResult result)
public static Color Color(this ResultState result)
{
switch (result.ResultState.Status)
switch (result.Status)
{
case TestStatus.Passed:
return Xamarin.Forms.Color.Green;
case TestStatus.Skipped:
return Xamarin.Forms.Color.FromRgb(206, 172, 0); // Dark Yellow
case TestStatus.Failed:
if (result.ResultState == ResultState.Failure)
if (result == ResultState.Failure)
return Xamarin.Forms.Color.Red;
if (result.ResultState == ResultState.NotRunnable)
if (result == ResultState.NotRunnable)
return Xamarin.Forms.Color.FromRgb(255, 106, 0); // Orange
return Xamarin.Forms.Color.FromRgb(170, 0, 0); // Dark Red

Просмотреть файл

@ -1,5 +1,5 @@
// ***********************************************************************
// Copyright (c) 2014 Charlie Poole
// Copyright (c) 2017 Charlie Poole
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
@ -21,32 +21,80 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ***********************************************************************
using System.Collections.Generic;
using System.Globalization;
using System.Reflection;
using System.Xml.Linq;
using NUnit.Framework.Interfaces;
using NUnit.Runner.Extensions;
using Xamarin.Forms;
namespace Nunit.Runner.ViewModel
namespace NUnit.Runner.Helpers
{
/// <summary>
/// Helper class used to summarize the result of a test run
/// Helper class used to summarize the result of a test run.
/// </summary>
public class ResultSummary
internal class ResultSummary
{
private readonly TestRunResult _results;
private XDocument _xmlResults;
#region Constructor
/// <summary>
/// Initializes a new instance of the <see cref="ResultSummary"/> class.
/// </summary>
/// <param name="result">The result.</param>
public ResultSummary(ITestResult result)
public ResultSummary(TestRunResult results)
{
TestResult = result;
InitializeCounters();
Summarize(result);
_results = results;
Initialize();
Summarize(results.TestResults);
}
OverallResult = result.ResultState.Status.ToString();
if (OverallResult == "Skipped")
OverallResult = "Warning";
#endregion
#region Public Methods
/// <summary>
///Gets all TestResults
/// </summary>
/// <returns></returns>
public IReadOnlyCollection<ITestResult> GetTestResults()
{
return _results.TestResults;
}
/// <summary>
/// Summarizes all of the results and returns the test result xml document
/// </summary>
/// <returns></returns>
public XDocument GetTestXml()
{
if (_xmlResults != null)
return _xmlResults;
var test = new XElement("test-run");
test.Add(new XAttribute("id", "0"));
test.Add(new XAttribute("testcasecount", TestCount));
test.Add(new XAttribute("total", TestCount));
test.Add(new XAttribute("passed", PassCount));
test.Add(new XAttribute("failed", FailureCount));
test.Add(new XAttribute("inconclusive", InconclusiveCount));
test.Add(new XAttribute("skipped", SkipCount));
test.Add(new XAttribute("asserts", AssertCount));
test.Add(new XAttribute("result", OverallResult));
test.Add(new XAttribute("xamarin-runner-version", typeof(ResultSummary).GetTypeInfo().Assembly.GetName().Version.ToString()));
var startTime = _results.StartTime;
var endTime = _results.EndTime;
var duration = endTime.Subtract(startTime).TotalSeconds;
test.Add(new XAttribute("start-time", startTime.ToString("u")));
test.Add(new XAttribute("end-time", endTime.ToString("u")));
test.Add(new XAttribute("duration", duration.ToString("0.000000", NumberFormatInfo.InvariantInfo)));
foreach (var result in _results.TestResults)
test.Add(XElement.Parse(result.ToXml(true).OuterXml));
_xmlResults = new XDocument(test);
return _xmlResults;
}
#endregion
@ -54,21 +102,16 @@ namespace Nunit.Runner.ViewModel
#region Properties
/// <summary>
/// Gets the test result this summary was created with
/// The overall result of the test run.
/// </summary>
public ITestResult TestResult { get; private set; }
/// <summary>
/// A string representation of the overall result of the test run.
/// </summary>
public string OverallResult { get; private set; }
public TestStatus OverallResult { get; private set; }
/// <summary>
/// Gets the color for the overall result.
/// </summary>
public Color OverallResultColor
{
get { return TestResult.Color(); }
get { return new ResultState(OverallResult).Color(); }
}
/// <summary>
@ -78,17 +121,22 @@ namespace Nunit.Runner.ViewModel
/// </summary>
public int TestCount { get; private set; }
/// <summary>
/// Gets the number of asserts
/// </summary>
public int AssertCount { get; private set; }
/// <summary>
/// Returns the number of test cases actually run.
/// </summary>
public int RunCount { get { return PassCount + FailureCount + ErrorCount + InconclusiveCount; } }
/// <summary>
/// Returns the number of test cases not run for any reason.
/// </summary>
public int NotRunCount
{
get { return IgnoreCount + ExplicitCount + InvalidCount + SkipCount; }
get { return IgnoreCount + ExplicitCount + InvalidCount + SkipCount; }
}
/// <summary>
@ -137,7 +185,7 @@ namespace Nunit.Runner.ViewModel
#region Helper Methods
private void InitializeCounters()
private void Initialize()
{
TestCount = 0;
PassCount = 0;
@ -148,10 +196,19 @@ namespace Nunit.Runner.ViewModel
IgnoreCount = 0;
ExplicitCount = 0;
InvalidCount = 0;
OverallResult = TestStatus.Inconclusive;
}
private void Summarize(IEnumerable<ITestResult> results)
{
foreach (var result in results)
Summarize(result);
}
private void Summarize(ITestResult result)
{
var status = TestStatus.Inconclusive;
if (result.Test.IsSuite)
{
foreach (ITestResult r in result.Children)
@ -160,34 +217,52 @@ namespace Nunit.Runner.ViewModel
else
{
TestCount++;
AssertCount += result.AssertCount;
switch (result.ResultState.Status)
{
case TestStatus.Passed:
PassCount++;
case TestStatus.Passed:
PassCount++;
if (status == TestStatus.Inconclusive)
status = TestStatus.Passed;
break;
case TestStatus.Failed:
status = TestStatus.Failed;
if (result.ResultState == ResultState.Failure)
FailureCount++;
else if (result.ResultState == ResultState.NotRunnable)
InvalidCount++;
else
ErrorCount++;
break;
case TestStatus.Skipped:
if (result.ResultState == ResultState.Ignored)
IgnoreCount++;
else if (result.ResultState == ResultState.Explicit)
ExplicitCount++;
else
SkipCount++;
break;
case TestStatus.Inconclusive:
InconclusiveCount++;
break;
}
switch (OverallResult)
{
case TestStatus.Inconclusive:
OverallResult = status;
break;
case TestStatus.Failed:
if (result.ResultState == ResultState.Failure)
FailureCount++;
else if (result.ResultState == ResultState.NotRunnable)
InvalidCount++;
else
ErrorCount++;
case TestStatus.Passed:
if (status == TestStatus.Failed)
OverallResult = status;
break;
case TestStatus.Skipped:
if (result.ResultState == ResultState.Ignored)
IgnoreCount++;
else if (result.ResultState == ResultState.Explicit)
ExplicitCount++;
else
SkipCount++;
break;
case TestStatus.Inconclusive:
InconclusiveCount++;
case TestStatus.Failed:
default:
break;
}
}
}
#endregion
}
}
}

Просмотреть файл

@ -0,0 +1,66 @@
// ***********************************************************************
// Copyright (c) 2017 Charlie Poole
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ***********************************************************************
using System.Collections.Generic;
using System.Reflection;
using System.Threading.Tasks;
using NUnit.Framework.Api;
using NUnit.Framework.Interfaces;
using NUnit.Framework.Internal;
namespace NUnit.Runner.Helpers
{
/// <summary>
/// Contains all assemblies for a test run, and controls execution of tests and collection of results
/// </summary>
internal class TestPackage
{
private readonly List<Assembly> _testAssemblies = new List<Assembly>();
public void AddAssembly(Assembly testAssembly)
{
_testAssemblies.Add(testAssembly);
}
public async Task<TestRunResult> ExecuteTests()
{
var resultPackage = new TestRunResult();
foreach (var assembly in _testAssemblies)
{
NUnitTestAssemblyRunner runner = await LoadTestAssemblyAsync(assembly).ConfigureAwait(false);
ITestResult result = await Task.Run(() => runner.Run(TestListener.NULL, TestFilter.Empty)).ConfigureAwait(false);
resultPackage.AddResult(result);
}
resultPackage.CompleteTestRun();
return resultPackage;
}
private static async Task<NUnitTestAssemblyRunner> LoadTestAssemblyAsync(Assembly assembly)
{
var runner = new NUnitTestAssemblyRunner(new DefaultTestAssemblyBuilder());
await Task.Run(() => runner.Load(assembly, new Dictionary<string, object>()));
return runner;
}
}
}

Просмотреть файл

@ -0,0 +1,57 @@
// ***********************************************************************
// Copyright (c) 2017 Charlie Poole
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ***********************************************************************
using System;
using System.Collections.Generic;
using NUnit.Framework.Interfaces;
namespace NUnit.Runner.Helpers
{
/// <summary>
/// Contains all results from all tests in a <see cref="TestPackage"/>
/// </summary>
internal class TestRunResult
{
private readonly List<ITestResult> _results = new List<ITestResult>();
public DateTime StartTime { get; private set; }
public DateTime EndTime { get; private set; }
public TestRunResult()
{
StartTime = DateTime.Now;
}
public void AddResult(ITestResult result)
{
_results.Add(result);
}
public void CompleteTestRun()
{
EndTime = DateTime.Now;
}
public IReadOnlyCollection<ITestResult> TestResults => _results;
}
}

Просмотреть файл

@ -1,4 +1,25 @@

// ***********************************************************************
// Copyright (c) 2017 Charlie Poole
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ***********************************************************************
namespace NUnit.Runner.Messages
{

Просмотреть файл

@ -27,6 +27,7 @@ using System.Threading.Tasks;
using NUnit.Framework.Interfaces;
using Xamarin.Forms;
using NUnit.Runner.Messages;
using NUnit.Runner.Helpers;
namespace NUnit.Runner.Services
{
@ -37,13 +38,13 @@ namespace NUnit.Runner.Services
{
}
public override async Task Process(ITestResult testResult)
public override async Task Process(ResultSummary result)
{
if (Options.TcpWriterParameters != null)
{
try
{
await WriteResult(testResult);
await WriteResult(result);
}
catch (Exception exception)
{
@ -54,16 +55,16 @@ namespace NUnit.Runner.Services
if (Successor != null)
{
await Successor.Process(testResult);
await Successor.Process(result);
}
}
private async Task WriteResult(ITestResult testResult)
private async Task WriteResult(ResultSummary testResult)
{
using (var tcpWriter = new TcpWriter(Options.TcpWriterParameters))
{
await tcpWriter.Connect().ConfigureAwait(false);
tcpWriter.Write(testResult.ToXml(true).OuterXml);
tcpWriter.Write(testResult.GetTestXml());
}
}
}

Просмотреть файл

@ -22,8 +22,7 @@
// ***********************************************************************
using System.Threading.Tasks;
using NUnit.Framework.Interfaces;
using NUnit.Runner.Helpers;
namespace NUnit.Runner.Services
{
@ -36,9 +35,9 @@ namespace NUnit.Runner.Services
protected TestOptions Options { get; private set; }
public TestResultProcessor Successor { get; set; }
protected TestResultProcessor Successor { get; private set; }
public abstract Task Process(ITestResult testResult);
public abstract Task Process(ResultSummary testResult);
public static TestResultProcessor BuildChainOfResponsability(TestOptions options)
{

Просмотреть файл

@ -22,12 +22,13 @@
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using NUnit.Framework.Interfaces;
using NUnit.Runner.Helpers;
using PCLStorage;
using CreationCollisionOption = PCLStorage.CreationCollisionOption;
using FileAccess = PCLStorage.FileAccess;
@ -39,28 +40,28 @@ namespace NUnit.Runner.Services
public XmlFileProcessor(TestOptions options)
: base(options) { }
public override async Task Process(ITestResult testResult)
public override async Task Process(ResultSummary result)
{
if (Options.CreateXmlResultFile)
if (Options.CreateXmlResultFile == false)
return;
try
{
try
{
await WriteXmlResultFile(testResult).ConfigureAwait(false);
}
catch (Exception)
{
Debug.WriteLine("Fatal error while trying to write xml result file!");
throw;
}
await WriteXmlResultFile(result).ConfigureAwait(false);
}
catch (Exception)
{
Debug.WriteLine("Fatal error while trying to write xml result file!");
throw;
}
if (Successor != null)
{
await Successor.Process(testResult).ConfigureAwait(false);
await Successor.Process(result).ConfigureAwait(false);
}
}
async Task WriteXmlResultFile(ITestResult testResult)
async Task WriteXmlResultFile(ResultSummary result)
{
string outputFolderName = Path.GetDirectoryName(Options.ResultFilePath);
string outputXmlReportName = Path.GetFileName(Options.ResultFilePath);
@ -74,8 +75,8 @@ namespace NUnit.Runner.Services
await outputFolder.CreateFileAsync(outputXmlReportName, CreationCollisionOption.ReplaceExisting);
using (var resultFileStream = new StreamWriter(await xmlResultFile.OpenAsync(FileAccess.ReadAndWrite)))
{
string xmlString = testResult.ToXml(true).OuterXml;
await resultFileStream.WriteAsync(xmlString);
var xml = result.GetTestXml().ToString();
await resultFileStream.WriteAsync(xml);
}
}

Просмотреть файл

@ -49,7 +49,7 @@ namespace NUnit.Runner.ViewModel
/// </summary>
public Color Color
{
get { return TestResult.Color(); }
get { return TestResult.ResultState.Color(); }
}
}
}

Просмотреть файл

@ -21,11 +21,9 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ***********************************************************************
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows.Input;
using NUnit.Framework.Interfaces;
using NUnit.Runner.View;
using Xamarin.Forms;
namespace NUnit.Runner.ViewModel
{
@ -34,13 +32,14 @@ namespace NUnit.Runner.ViewModel
/// <summary>
/// Constructs the view model
/// </summary>
/// <param name="testResult">The top level test results</param>
/// <param name="results">The package of all results in run</param>
/// <param name="viewAll">If true, views all tests, otherwise only shows those
/// that did not pass</param>
public ResultsViewModel(ITestResult testResult, bool viewAll)
public ResultsViewModel(IReadOnlyCollection<ITestResult> results, bool viewAll)
{
Results = new ObservableCollection<ResultViewModel>();
AddTestResults(testResult, viewAll);
foreach (var result in results)
AddTestResults(result, viewAll);
}
/// <summary>

Просмотреть файл

@ -21,18 +21,11 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Threading.Tasks;
using System.Windows.Input;
using NUnit.Framework.Api;
using NUnit.Framework.Interfaces;
using NUnit.Framework.Internal;
using NUnit.Runner.Helpers;
using NUnit.Runner.View;
using Nunit.Runner.ViewModel;
using NUnit.Runner.Services;
@ -42,20 +35,20 @@ namespace NUnit.Runner.ViewModel
{
class SummaryViewModel : BaseViewModel
{
readonly IList<Assembly> _testAssemblies;
readonly TestPackage _testPackage;
ResultSummary _results;
bool _running;
TestResultProcessor _resultProcessor;
public SummaryViewModel()
{
_testAssemblies = new List<Assembly>();
_testPackage = new TestPackage();
RunTestsCommand = new Command(async o => await ExecuteTestsAync(), o => !Running);
ViewAllResultsCommand = new Command(
async o => await Navigation.PushAsync(new ResultsView(new ResultsViewModel(Results.TestResult, true))),
async o => await Navigation.PushAsync(new ResultsView(new ResultsViewModel(_results.GetTestResults(), true))),
o => !HasResults);
ViewFailedResultsCommand = new Command(
async o => await Navigation.PushAsync(new ResultsView(new ResultsViewModel(Results.TestResult, false))),
async o => await Navigation.PushAsync(new ResultsView(new ResultsViewModel(_results.GetTestResults(), false))),
o => !HasResults);
}
@ -122,25 +115,23 @@ namespace NUnit.Runner.ViewModel
/// <returns></returns>
internal void AddTest(Assembly testAssembly)
{
_testAssemblies.Add(testAssembly);
_testPackage.AddAssembly(testAssembly);
}
async Task ExecuteTestsAync()
{
Running = true;
Results = null;
var runner = await LoadTestAssembliesAsync().ConfigureAwait(false);
ITestResult result = await Task.Run(() => runner.Run(TestListener.NULL, TestFilter.Empty)).ConfigureAwait(false);
TestRunResult results = await _testPackage.ExecuteTests();
ResultSummary summary = new ResultSummary(results);
_resultProcessor = TestResultProcessor.BuildChainOfResponsability(Options);
await _resultProcessor.Process(result).ConfigureAwait(false);
await _resultProcessor.Process(summary).ConfigureAwait(false);
Device.BeginInvokeOnMainThread(
() =>
{
Results = new ResultSummary(result);
Results = summary;
Running = false;
if (Options.TerminateAfterExecution)
@ -148,14 +139,6 @@ namespace NUnit.Runner.ViewModel
});
}
async Task<NUnitTestAssemblyRunner> LoadTestAssembliesAsync()
{
var runner = new NUnitTestAssemblyRunner(new DefaultTestAssemblyBuilder());
foreach (var testAssembly in _testAssemblies)
await Task.Run(() => runner.Load(testAssembly, new Dictionary<string, object>()));
return runner;
}
public static void TerminateWithSuccess()
{
#if __IOS__

Просмотреть файл

@ -61,7 +61,7 @@ namespace NUnit.Runner.ViewModel
/// </summary>
public Color Color
{
get { return TestResult.Color(); }
get { return TestResult.ResultState.Color(); }
}
private string StringOrNone(string str)

Просмотреть файл

@ -14,6 +14,8 @@
<SubType>Code</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)Extensions\XamarinExtensions.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Helpers\TestRunResult.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Helpers\TestPackage.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Messages\ErrorMessage.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Properties\Annotations.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Properties\AssemblyCommon.cs" />
@ -24,7 +26,7 @@
<Compile Include="$(MSBuildThisFileDirectory)Services\TestOptions.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Services\XmlFileProcessor.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\BaseViewModel.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\ResultSummary.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Helpers\ResultSummary.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\ResultsViewModel.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\ResultViewModel.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\SummaryViewModel.cs" />

Просмотреть файл

@ -4,6 +4,6 @@
<NuGetPackageRoot>$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
</PropertyGroup>
<ImportGroup>
<Import Project="$(NuGetPackageRoot)\Xamarin.Forms\2.3.3.168\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets" Condition="Exists('$(NuGetPackageRoot)\Xamarin.Forms\2.3.3.168\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" />
<Import Project="$(NuGetPackageRoot)xamarin.forms\2.3.3.168\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets" Condition="Exists('$(NuGetPackageRoot)xamarin.forms\2.3.3.168\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" />
</ImportGroup>
</Project>