gpt4 book ai didi

c# - 将 ITestOutputHelper 与 Selenium、xUnit 和 C# 一起使用

转载 作者:行者123 更新时间:2023-12-04 03:45:56 26 4
gpt4 key购买 nike

我最近将一个项目从 NUnit 切换到 xUnit,以便可以使用 ITestOutputHelper 输出到日志。
该项目是一个相当标准的布局
功能文件->步骤类->页面类->帮助类。包括在帮助类中,我们也有 hooks.class。我正在使用 xUnit 运行者。
所以在我的钩子(Hook)类中,我创建了这个

private readonly ScenarioContext _scenarioContext;
private ITestOutputHelper _testOutputHelper;

public Hooks(ScenarioContext scenarioContext, ITestOutputHelper testOutputHelper)
{
_scenarioContext = scenarioContext;
this._testOutputHelper = testOutputHelper;
}

public void WriteOutput(string theMessage)
{
_testOutputHelper.WriteLine(theMessage);
}
现在我的问题是如何从其他类访问 WriteOutput 函数?
还是我把它放在了错误的类(class)?

最佳答案

由于你的钩子(Hook)类已经接受了一个 ITestOutputHelper 对象,你的其他步骤定义只需要做同样的事情。从那时起,它只是老式的依赖注入(inject)。
如果您在每个步骤定义类中初始化页面模型和实用程序类,因为它看起来 ITestOutputHelper 已经在 SpecFlow 的 dependency injection framework 中注册,您可以将对助手的引用从构造函数传递给构造函数。
例如,将构造函数 arg 和字段添加到步骤定义:

[Binding]
public class LoginSteps
{
private ITestOutputHelper testOutputHelper;
private LoginPage loginPage;
private SomeUtility utility;

public LoginSteps(IWebDriver driver, ITestOutputHelper testOutputHelper)
{
this.testOutputHelper = testOutputHelper;

// Pass the test output helper to a page model
loginPage = new LoginPage(driver, testOutputHelper);

// Pass the test output helper to a utility class
utility = new SomeUtility(testOutputHelper);
}

[Given(@"the user is logged in as ""(.*)"")")]
public void GivenTheUserIsLoggedInAs(string username)
{
testOutputHelper.WriteLine("...");
loginPage.LogIn(username);
}
}
然后页面模型和实用程序类需要构造函数参数和字段:
public class LoginPage
{
private IWebDriver driver;
private ITestOutputHelper testOutputHelper;

public LoginPage(IWebDriver driver, ITestOutputHelper testOutputHelper)
{
this.driver = driver;
this.testOutputHelper = testOutputHelper;
}

// ...
}

public class SomeUtility
{
private ITestOutputHelper testOutputHelper;

public SomeUtility(ITestOutputHelper testOutputHelper)
{
this.testOutputHelper = testOutputHelper;
}

// ...
}

关于c# - 将 ITestOutputHelper 与 Selenium、xUnit 和 C# 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65146972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com