我正在基于.Net Core构建一个Selenium测试框架,团队决定使用xUnit。一切都很顺利,但我们一直试图复制Java TestNG监听器的功能,但一直没有成功。我在xunit git repo中查找,发现有几个接口如ITestListener被使用。进一步搜索后,我发现这些监听器来自名为TestDriven.Framework的包,想知道如何使用使用这些接口创建的测试监听器?目前,这是我的简单测试监听器,当测试失败时应该写入某些内容:
public class Listener
{
readonly int totalTests;
public Listener(ITestListener listener, int totalTests)
{
this.totalTests = totalTests;
TestListener = listener;
TestRunState = TestRunState.NoTests;
}
public ITestListener TestListener { get; private set; }
public TestRunState TestRunState { get; set; }
public void onTestFail(ITestFailed args)
{
Console.WriteLine(args.Messages);
}
}
现在,我知道你可以在拆解挂钩内完成这个操作,但请记住,这只是一个简单的例子,我所想的更复杂。因此,确切地说,我应该在哪里/如何注册测试以使用此侦听器?在Java TestNg中,我会使用@Listeners
,但在C#中我不太确定。
Edit 1:所以这个例子可行,并且已将其添加到我的项目结构中,但当我尝试使用它时
class TestPassed : TestResultMessage, ITestPassed
{
/// <summary>
/// Initializes a new instance of the <see cref="TestPassed"/> class.
/// </summary>
public TestPassed(ITest test, decimal executionTime, string output)
: base(test, executionTime, output) {
Console.WriteLine("Execution time was an awesome " + executionTime);
}
}
我在注册这个项目时遇到了麻烦,也不确定是否正确地注册了它。就示例而言,我已经找到了实际的消息接收器,但也找到了实际的测试状态数据,我不太确定该如何使用。
ITestFailed
ITestSkipped
等。 - Nick