Skip to content
This repository was archived by the owner on Jan 10, 2025. It is now read-only.

Commit 9a654ca

Browse files
committed
[TouchRunner] Fix running multiple test assemblies in NUnitLite mode. (#76)
It's not possible to use a single NUnitTestAssemblyRunner instance for multiple assemblies, so we need to create one for each assembly we want to test.
1 parent 55c747f commit 9a654ca

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

NUnitLite/TouchRunner/TouchRunner.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -533,15 +533,21 @@ SettingsDictionary CreateSettings (SettingsDictionary settings)
533533
}
534534

535535
#if NUNITLITE_NUGET
536-
NUnitTestAssemblyRunner runner = new NUnitTestAssemblyRunner (new DefaultTestAssemblyBuilder ());
536+
// we need one runner per test assembly
537+
DefaultTestAssemblyBuilder builder = new DefaultTestAssemblyBuilder ();
538+
List<NUnitTestAssemblyRunner> runners = new List<NUnitTestAssemblyRunner> ();
537539

538540
public bool Load (string assemblyName, IDictionary<string, object> settings = null)
539541
{
542+
var runner = new NUnitTestAssemblyRunner (builder);
543+
runners.Add (runner);
540544
return AddSuite ((TestSuite) runner.Load (assemblyName, CreateSettings (settings)));
541545
}
542546

543547
public bool Load (Assembly assembly, IDictionary<string, object> settings = null)
544548
{
549+
var runner = new NUnitTestAssemblyRunner (builder);
550+
runners.Add (runner);
545551
return AddSuite ((TestSuite) runner.Load (assembly, CreateSettings (settings)));
546552
}
547553
#else
@@ -576,7 +582,9 @@ public void Run (Test test)
576582
Result = null;
577583

578584
#if NUNITLITE_NUGET
579-
runner.Run (this, new MatchTestFilter { MatchTest = test });
585+
var filter = new MatchTestFilter { MatchTest = test };
586+
foreach (var runner in runners)
587+
runner.Run (this, filter);
580588

581589
// The TestResult we get back from the runner is for the top-most test suite,
582590
// which isn't necessarily the test that we ran. So look for the TestResult
@@ -593,7 +601,13 @@ ITestResult find_result (ITestResult tr)
593601
return null;
594602
}
595603

596-
Result = (TestResult) (find_result (runner.Result) ?? runner.Result);
604+
var tsr = new TestSuiteResult (suite);
605+
foreach (var runner in runners) {
606+
var rv = (TestResult) (find_result (runner.Result) ?? runner.Result);
607+
if (rv != null)
608+
tsr.AddResult (rv);
609+
}
610+
Result = tsr;
597611
#else
598612
TestExecutionContext current = TestExecutionContext.CurrentContext;
599613
current.WorkDirectory = Environment.CurrentDirectory;

0 commit comments

Comments
 (0)