NUnit Console Runner에서 / domain = multiple 로 실행 하면 NullReference 예외가 발생합니다.
/ domain = multiple 또는 / domain = single없이 실행됩니다. "Use Seperate AppDomain"설정이 선택된 상태에서 ReSharper 10.0.2 테스트 실행기를 사용하여 실행하면 원하는 방식으로 작동하고 테스트 어셈블리를 병렬로 실행합니다.
콘솔 러너를 사용하여 여러 어셈블리에서 매개 변수화 된 테스트를 병렬로 실행할 수 있기를 원합니다. 정적 자산을 병렬로로드해야하므로 테스트는 여러 AppDomain에서 실행되어야합니다.
문제를 재현하기 위해 간단한 단위 테스트 솔루션을 만들었습니다. 두 가지 프로젝트가 있습니다. 각각 다음과 같은 하나의 테스트 클래스가 있습니다.
[TestFixture]
public class UnitTest1
{
public static IEnumerable Test1Static
{
get
{
Console.WriteLine($"before sleep 1 - {DateTime.Now}");
Thread.Sleep(12000);
Console.WriteLine($"after sleep 1 - {DateTime.Now}");
return new List<bool> { true, true };
}
}
[Test, TestCaseSource(nameof(Test1Static))]
public void TestMethod1(bool tc)
{
Assert.IsTrue(tc);
}
}
콘솔 결과는 다음과 같습니다.
nunit3-console.exe "UnitTestProject1\bin\Debug\UnitTestProject1.dll" "UnitTestProject2\bin\Debug\UnitTestProject2.dll" /domain=multiple
NUnit Console Runner 3.2.0
Copyright (C) 2016 Charlie Poole
Runtime Environment
OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1
CLR Version: 2.0.50727.5485
Test Files
UnitTestProject1\bin\Debug\UnitTestProject1.dll
UnitTestProject2\bin\Debug\UnitTestProject2.dll
Test Run Summary
Overall result: System.NullReferenceException: Object reference not set to an instance of an object.
at NUnit.Common.ColorConsoleWriter.WriteLabel(String label, Object option, ColorStyle valueStyle)
at NUnit.Common.ColorConsoleWriter.WriteLabelLine(String label, Object option, ColorStyle valueStyle)
at NUnit.ConsoleRunner.ResultReporter.WriteSummaryReport()
at NUnit.ConsoleRunner.ConsoleRunner.RunTests(TestPackage package, TestFilter filter)
at NUnit.ConsoleRunner.Program.Main(String[] args)
기본적으로 NUnit 3은 별도의 프로세스 ( /process=Multiple
플래그) 에서 각 어셈블리를 실행 하므로 서로 다른 프로세스에 있지만 테스트가 이미 여러 AppDomain에 있으므로 /domain=multiple
플래그와 함께 /process=InProcess
또는 함께 사용할 때만 플래그가 의미가 /process=Separate
있습니다. 이러한 플래그 중 하나를 추가하면 예상대로 작동합니다.
즉,이 상황에서 NUnit이 충돌하지 않아야하므로 GitHub에보고하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다