Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 努尼特。将参数传递到拆卸方法中_C#_Unit Testing_Nunit_Nunit 2.5_Teardown - Fatal编程技术网

C# 努尼特。将参数传递到拆卸方法中

C# 努尼特。将参数传递到拆卸方法中,c#,unit-testing,nunit,nunit-2.5,teardown,C#,Unit Testing,Nunit,Nunit 2.5,Teardown,我在用NUnit。我的测试方法定义如下: [Test] [TestCase("Fred", "Bloggs")] [TestCase("Joe", "Smith")] public void MyUnitTest(string firstName, string lastName) { ... } 测试用例完成后,将进入TearDown方法。我们要做的是,将这些TestCase参数传递到测试方法中,但也传递到TearDown方法中 大概是这样的: [TearDown] public v

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

[Test]
[TestCase("Fred", "Bloggs")]
[TestCase("Joe", "Smith")]
public void MyUnitTest(string firstName, string lastName)
{
    ...
}
测试用例完成后,将进入TearDown方法。我们要做的是,将这些TestCase参数传递到测试方法中,但也传递到TearDown方法中

大概是这样的:

[TearDown]
public void TearDown(string firstName, string lastName)
{
  ...
}
我希望NUnit能支持这一点。否则,我需要在测试方法中编写定制代码,以将测试数据存储在集合中。然后,该集合将用于拆卸方法

如果有人有什么想法。。那太好了! 谢谢
Christian

在测试夹具中为每个测试执行拆卸和设置。考虑下面的测试:

[TestCase("Joe", "Smith")]
public void Test1(string firstName, string lastName) { ... }

[Test]
public void Test2() { ... }

[TestCase(10)]
public void Test3(int value) { ... }
拆卸方法的预期签名是什么


所以,答案是否定的。NUnit不提供将测试参数传递给拆卸方法的默认方式。我想不会的。您需要手动添加此功能。

实际上,这是可能的


如果在拆卸中引用
TestContext.CurrentContext.Test.Name
,则可以获得包含传递给它的参数的完整方法签名。您必须解析它,但它就在那里。

可以直接从
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[]中所有可能的值
但是当然可以在
拆卸
功能中引用这些对象

我在谷歌搜索了很多次后认为NUnit不支持它。但是谢谢你的回答。检查总是好的。注意:如果有人打算使用应答方法,则应检查NUnit的版本-参数数组自,