테스트 실행 중 각 테스트 후에 NUnit 콘솔에서 테스트 결과를 보고합니다.
-
23-12-2019 - |
문제
테스트 어셈블리에서 NUnit 콘솔을 실행했지만 때때로 NUnit이 충돌합니다(현재 이유를 알아내는 중입니다).nunit이 충돌하면 XML 보고서가 생성되지 않으며 사실상 테스트 보고서도 없이 남게 됩니다.테스트 실행 시간이 매우 길어서 테스트 실행 보고서 전체를 잃어버리면 안 좋은 상황입니다.NUNit이 진행되는 대로(각 테스트 후) xml 로그 파일을 작성하도록 지시하는 방법이 있습니까?이는 XML 파일이 제대로 닫히지 않음을 의미하더라도 마찬가지입니다.NUnit TestListener를 사용할 수 있다는 것을 알고 있습니다.그러나 추가 코드를 직접 작성하는 것을 포함하지 않는 스위치나 다른 것이 있습니까?
해결책
당신은 호출할 수 있습니다 nunit-console
와 더불어 /labels
명령줄 스위치.이렇게 하면 실행 시 각 테스트의 (정규화된) 이름을 콘솔에 기록하게 되지만 출력에는 테스트 결과가 포함되지 않습니다.그러나 어떤 테스트가 성공적으로 실행되었는지 표시됩니다.
유일한 다른 옵션은 할인된 옵션, 즉 직접 작성하는 것입니다. EventListener
구현. 해당 인터페이스에 대한 문서 조금 가볍긴 하지만 NUnit 추가 기능 어셈블리 작성에 대한 NUnit 문서 마음이 바뀌면 시작하기에 충분할 것입니다.
다른 팁
먼저 가까운 장래에 그러한 로깅이 상자 밖으로 나오는 로깅이 제공됩니다.이 기능은 이미 요청되었습니다 - 테스트가 끝나면 테스트가 일어나지 않고 부분 결과를 작성하십시오.
public void RunStarted(string name, int testCount)
{
try
{
_instanceId = Environment.GetEnvironmentVariable("InstanceId");
_buildId = Environment.GetEnvironmentVariable("BuildId");
_browser = Environment.GetEnvironmentVariable("BrowserToTest");
_template = Environment.GetEnvironmentVariable("TemplateToTest");
}
catch { }
}
public void TestFinished(TestResult result)
{
if (result.ResultState == ResultState.Ignored)
{
return;
}
var r = new TestingWorkerData
{
BuildId = _buildId,
InstanceId = _instanceId,
TestName = result.FullName,
Success = result.IsSuccess,
TimeTaken = result.Time.ToString(CultureInfo.InvariantCulture),
Message = result.Message,
StackTrace = result.StackTrace,
Browser = _browser,
Template = _template
};
File.AppendAllLines(@"z:\\results.txt", new[] {JsonConvert.SerializeObject(r)});
}
public class TestingWorkerData
{
public string TestName { get; set; }
public bool Success { get; set; }
public string TimeTaken { get; set; }
public string Message { get; set; }
public string StackTrace { get; set; }
public string InstanceId { get; set; }
public string Browser { get; set; }
public string Template { get; set; }
public string BuildId { get; set; }
}
.
[NUnitAddin]
public class ProgressReporterNugetAddin : IAddin
{
public bool Install(IExtensionHost host)
{
var listeners = host.GetExtensionPoint("EventListeners");
listeners.Install(new ProgressReporterEventListener());
return true;
}
}
.
참고 : 꽤 좋은 기사가 있습니다. http : / / jimmykeen.net/2015/02/28/logging-test-results-with-nunit/ 비슷한 접근 방식을 다루는
불행히도 nunit <3.x 만 작동합니다 NUNIT3이 크게 재 작성 되었기 때문에 - 예. 더 이상 EventListener 인터페이스가 없습니다.