如何在测试拆卸时使用 NUnit 3 读取 ITestResult
How to read ITestResult with NUnit 3 at test teardown
我正在尝试使用内部 ITestResult 接口在 NUnit 3 中获取测试结果。但是,当我将 ITestResult 对象传递给拆卸方法时,我得到 "OneTimeSetup: Invalid signature for SetUp or TearDown method: TestFinished",其中 TestFinished 被列为我的拆卸方法。
如果我没有通过对象,测试就可以正常进行。我试图将我的 [TearDown] 方法移动到包含测试的实际 class 而不是我的基础 class 但导致相同的错误。我想在每次测试完成后使用我的 TestFinish 函数 运行,这样我就可以根据 pass/fail 或异常消息中的内容采取相应的行动,而不是将我的测试 try/catch 与操作结构一起使用 I现在有了。
下面是我的代码结构:
----一个文件开始和结束测试并创建一个webdriver对象来使用---
[OneTimeSetUp]
public void Setup()
{
//Do some webdriver setup...
}
----用于设置或拆除测试的基础测试Class----
[TestFixture]
public class BaseTestClass
{
//Also use the webdriver object created at [OneTimeSetUp]
protected void TestRunner(Action action)
{
//perform the incoming tests.
try
{
action();
}
//if the test errors out, log it to the file.
catch (Exception e)
{
//Do some logging...
}
}
[TearDown]
public void TestFinished(ITestResult i)
{
//Handle the result of a test using ITestResult object
}
}
----使用BaseTest的测试文件Class----
class AccountConfirmation : BaseTestClass
{
[Test]
public void VerifyAccountData() {
TestRunner(() => {
//Do a test...
});
}
}
从您的 TearDown
方法中删除 ITestResult
并在方法中使用 TestContext.CurrentContext.Result
。
例如,
[Test]
public void TestMethod()
{
Assert.Fail("This test failed");
}
[TearDown]
public void TearDown()
{
TestContext.WriteLine(TestContext.CurrentContext.Result.Message);
}
会输出,
=> NUnitFixtureSetup.TestClass.TestMethod
This test failed
我正在尝试使用内部 ITestResult 接口在 NUnit 3 中获取测试结果。但是,当我将 ITestResult 对象传递给拆卸方法时,我得到 "OneTimeSetup: Invalid signature for SetUp or TearDown method: TestFinished",其中 TestFinished 被列为我的拆卸方法。
如果我没有通过对象,测试就可以正常进行。我试图将我的 [TearDown] 方法移动到包含测试的实际 class 而不是我的基础 class 但导致相同的错误。我想在每次测试完成后使用我的 TestFinish 函数 运行,这样我就可以根据 pass/fail 或异常消息中的内容采取相应的行动,而不是将我的测试 try/catch 与操作结构一起使用 I现在有了。
下面是我的代码结构:
----一个文件开始和结束测试并创建一个webdriver对象来使用---
[OneTimeSetUp]
public void Setup()
{
//Do some webdriver setup...
}
----用于设置或拆除测试的基础测试Class----
[TestFixture]
public class BaseTestClass
{
//Also use the webdriver object created at [OneTimeSetUp]
protected void TestRunner(Action action)
{
//perform the incoming tests.
try
{
action();
}
//if the test errors out, log it to the file.
catch (Exception e)
{
//Do some logging...
}
}
[TearDown]
public void TestFinished(ITestResult i)
{
//Handle the result of a test using ITestResult object
}
}
----使用BaseTest的测试文件Class----
class AccountConfirmation : BaseTestClass
{
[Test]
public void VerifyAccountData() {
TestRunner(() => {
//Do a test...
});
}
}
从您的 TearDown
方法中删除 ITestResult
并在方法中使用 TestContext.CurrentContext.Result
。
例如,
[Test]
public void TestMethod()
{
Assert.Fail("This test failed");
}
[TearDown]
public void TearDown()
{
TestContext.WriteLine(TestContext.CurrentContext.Result.Message);
}
会输出,
=> NUnitFixtureSetup.TestClass.TestMethod
This test failed