首页 > 解决方案 > xUnit、SpecFlow Selenium 和 ITestOutputHelper 问题

问题描述

在 VS Code 中使用 C#、Selenium、SpecFlow 和 xUnit 的自动化测试项目仍然存在问题,我正在尝试使用 ITestOutputHelper 输出到日志作为测试进度。

所以我有这门课

using Xunit.Abstractions;

[Binding]
public class Logging
{
    private readonly ITestOutputHelper _testOutputHelper;

    public Logging(ITestOutputHelper testOutputHelper)
    {
        _testOutputHelper = testOutputHelper;
    }

    public void WriteOutput(string theMessage)
    {
        _testOutputHelper.WriteLine(theMessage);
    }
}

从这个类中调用

public static class WriteLog
{
    static string _logout;

    public static void WriteLogData(string logout)
    {
        _logout = logout;
    }

    public static void WriteToLog(this Logging logger)
    {
        logger.WriteOutput(_logout);
    }
}

我正在尝试使用以下方法从测试中调用 WriteLog

public static void WriteToReport(string theMessage)
{
    WriteLog. WriteLogData(theMessage);
    WriteLog. WriteToLog();
}

但我得到一个错误WriteLog.WriteToLog(); 错误是

There is no argument given that corresponds to the required formal parameter 'logger' of 'WriteLog.WriteToLog(Logging)'

所以我的问题是,如何将日志信息发送到 Logging.WriteOutput?

任何人都可以提供任何建议吗?

提前致谢

凯夫

标签: c#seleniumxunitspecflow

解决方案


这是解决方案

Step Class TestAppSteps

使用 Xunit.Abstractions;

[Binding]
public sealed class TestAppSteps : TestAppPage
{
    public TestAppSteps(ITestOutputHelper output) : base(output)
    {
    }

    code
}           

使用 Xunit.Abstractions 的页面类
TestAppPage;

public class TestAppPage : PageAssertions
{

    public TestAppPage(ITestOutputHelper output) : base(output)
    {

    }
    
    code
}

使用 Xunit.Abstractions 的实用程序类 PageAssertions;

public class PageAssertions : SharedClass
{
    public PageAssertions(ITestOutputHelper output) : base(output) { }

    code inc'
    WriteToReport("Pass: URL is correct");
}

使用 Xunit.Abstractions 的实用程序类 SharedClass;

public abstract class SharedClass : OutputFunctions
{
    public SharedClass(ITestOutputHelper output) 
        : base(output)
    {
    }
    
    shared code including
    WriteToReport(GetTheCurrentMethod());
}   

抽象类输出函数

使用 Xunit.Abstractions;

public abstract class OutputFunctions
{
    protected readonly ITestOutputHelper _output;

    public OutputFunctions(ITestOutputHelper output)
    {
        _output = output;
    }

    public void WriteToReport(string theMessage)
    {
        _output.WriteLine(theMessage);
    }
}

推荐阅读