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.

Смежные вопросы