我想截取失败的测试用例的屏幕截图。但我不知道如何强迫Nunit使用我的听众。 我试图使用IAddins,但Nunit没有NUnit.Core.Extensibility lib。 我的代码:
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 :(得分:0)
ITestListener是NUnit自身在运行测试时使用的内部接口。在NUnit V2(TestListener)中有一个类似的界面,你可以创建使用它的插件。 NUnit 3没有像NUnit 2那样的插件,尽管它可以通过其他方式扩展。
您是否只想为某些测试保存屏幕截图?或者对于某个灯具中的每个测试?或者更一般地说?
要在夹具中执行此操作,可以使用OneTimeTearDown方法。