테스트 실행 중 각 테스트 후에 NUnit 콘솔에서 테스트 결과를 보고합니다.

StackOverflow https://stackoverflow.com//questions/22070217

  •  23-12-2019
  •  | 
  •  

문제

테스트 어셈블리에서 NUnit 콘솔을 실행했지만 때때로 NUnit이 충돌합니다(현재 이유를 알아내는 중입니다).nunit이 충돌하면 XML 보고서가 생성되지 않으며 사실상 테스트 보고서도 없이 남게 됩니다.테스트 실행 시간이 매우 길어서 테스트 실행 보고서 전체를 잃어버리면 안 좋은 상황입니다.NUNit이 진행되는 대로(각 테스트 후) xml 로그 파일을 작성하도록 지시하는 방법이 있습니까?이는 XML 파일이 제대로 닫히지 않음을 의미하더라도 마찬가지입니다.NUnit TestListener를 사용할 수 있다는 것을 알고 있습니다.그러나 추가 코드를 직접 작성하는 것을 포함하지 않는 스위치나 다른 것이 있습니까?

도움이 되었습니까?

해결책

당신은 호출할 수 있습니다 nunit-console 와 더불어 /labels 명령줄 스위치.이렇게 하면 실행 시 각 테스트의 (정규화된) 이름을 콘솔에 기록하게 되지만 출력에는 테스트 결과가 포함되지 않습니다.그러나 어떤 테스트가 성공적으로 실행되었는지 표시됩니다.

유일한 다른 옵션은 할인된 옵션, 즉 직접 작성하는 것입니다. EventListener 구현. 해당 인터페이스에 대한 문서 조금 가볍긴 하지만 NUnit 추가 기능 어셈블리 작성에 대한 NUnit 문서 마음이 바뀌면 시작하기에 충분할 것입니다.

다른 팁

먼저 가까운 장래에 그러한 로깅이 상자 밖으로 나오는 로깅이 제공됩니다.이 기능은 이미 요청되었습니다 - 테스트가 끝나면 테스트가 일어나지 않고 부분 결과를 작성하십시오.

완료 될 때까지 우리는 몇 가지 사용자 정의 코드를 작성해야하며 NUNIT <3.x 꽤 간단한 :
을 사용해야합니다. 1) EventListener 인터페이스를 구현하는 이벤트 리스너를 만들어야합니다
2)이 인터페이스는 예를 들어 테스트 실행의 다른 상태에 대한 알림을 제공합니다. runstarted, runfinished 또는 testfinished. 귀하가 필요로하는 것은 귀하의 사건과 관련된 로깅을 구현하는 것입니다. 내 코드에서 스 니펫 :

 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; }
 }
.

3) 마지막으로 NUNIT addin의 생성 :

[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 인터페이스가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top