2016-10-26 3 views
1

실패한 테스트 케이스의 스크린 샷을 가져 가고 싶습니다. 그러나 Nunit이 내 청취자를 사용하도록하는 방법을 모르겠습니다. IAddins를 사용하려고했지만 Nunit에는 NUnit.Core.Extensibility lib가 없습니다. 내 코드 :Nunit. ITestListener를 사용하여 테스트 실패에 대한 스크린 샷 가져 오기

using System; 
using OpenQA.Selenium; 
using NUnit.Framework.Interfaces; 
using AT_MentoringPortal.Driver; 
using System.Drawing.Imaging; 

namespace AT_MentoringPortal.listeners 
{ 
    public class ScreenshotListener : ITestListener 
    { 
     private readonly string path = ".//screens//"; 

     public void TestFinished(ITestResult result) 
     { 
      if (result.ResultState.Status == TestStatus.Failed) 
      { 
       IWebDriver driver = DriverFactory.GetDriver(); 
       this.MakeScreenshot(driver, result.Name); 
      } 
     } 

     public void MakeScreenshot(IWebDriver driver, string testName) 
     { 
      string timestamp = DateTime.Now.ToString("yyyy-MM-dd-hhmm-ss"); 
      var screenshot = ((ITakesScreenshot)driver).GetScreenshot(); 
      screenshot.SaveAsFile($"{this.path}{timestamp} {testName}", ImageFormat.Jpeg); 
     } 

     public void TestOutput(TestOutput output) 
     { 
      // throw new NotImplementedException(); 
     } 

     public void TestStarted(ITest test) 
     { 
      // throw new NotImplementedException(); 
     } 
    } 
} 

, 어떻게 테스트 클래스 내 리스너를 시작하는 저를 보여주십시오.

+0

어떤 NUnit 버전을 사용하고 있습니까? – Charlie

+0

@Charlie 버전 3.5.0 (최신) Nunit 및 Nunit3TestAdapter를 사용합니다. –

답변

0

ITestListener는 NUnit 자체 테스트에서 사용되는 내부 인터페이스입니다. NUnit V2 (TestListener)에는 비슷한 인터페이스가 있었고이를 사용하는 추가 기능을 만들 수있었습니다. NUnit 3은 다른 방법으로 확장 될 수 있지만 NUnit 2와 같은 방식으로 추가 기능을 제공하지 않습니다.

특정 테스트에만 스크린 샷을 저장 하시겠습니까? 또는 특정 조명기의 각 테스트마다? 또는 더 일반적으로?

조명기 내에서이를 수행하려면 OneTimeTearDown 메소드를 사용할 수 있습니다.

관련 문제