c# - N单位。将参数传递给拆卸方法

标签 c# unit-testing nunit nunit-2.5 teardown

我正在使用 NUnit。我的测试方法定义如下:

[Test]
[TestCase("Fred", "Bloggs")]
[TestCase("Joe", "Smith")]
public void MyUnitTest(string firstName, string lastName)
{
    ...
}

测试用例完成后,它进入 TearDown 方法。想要做的是将那些传递到测试方法但也传递到 TearDown 方法的 TestCase 参数。

像这样:

[TearDown]
public void TearDown(string firstName, string lastName)
{
  ...
}

我希望 NUnit 支持这种开箱即用的功能。否则,我需要在测试方法中编写定制代码以将测试数据存储在集合中。然后在 TearDown 方法中使用该集合。

如果有人有任何想法..那就太好了! 谢谢。 基督徒

最佳答案

可以直接从 TearDown 函数中的 TestContext 引用测试参数。

像这样。

[Test]
[TestCase("Fred", "Bloggs")]
[TestCase("Joe", "Smith")]
public void MyUnitTest(string firstName, string lastName)
{
}

[TearDown]
public void TearDown()
{
    string firstName = TestContext.CurrentContext.Test.Arguments[0] as string;
    string lastName = TestContext.CurrentContext.Test.Arguments[1] as string;
}

应该注意的是,TestContext.CurrentContext.Test.Arguments 只是一个对象数组,无论个体签名如何,都会为 TestFixture 中的每个测试调用,因此我们应该小心确保处理 Arguments[] 中所有可能的值,但肯定可以在 TearDown 中引用这些对象功能

关于c# - N单位。将参数传递给拆卸方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295054/

相关文章:

javascript - 如何在测试中伪造 Bluebird 的计时器?

c# - 在 NUnit 中测试不可编译的代码

c# - NUnit Assert AreEqual 多行文本差异

c# - 在 n 列之间划分内容的最佳方法是什么?

c# - 他登录MVC后如何显示用户数据

c# - 无法通过 Windows 上的 Docker 访问 .Net Core 应用程序(本地主机)

c# - 从 C# NUnit 在多个浏览器中依次运行 Selenium 测试

c# - C#中构造函数的具体形式

unit-testing - 如何使 Mock 对象与目标对象保持同步

java - 如何使用 Mockito 模拟 void 方法