Chr*_*rke 9 c# nunit unit-testing nunit-2.5 teardown
我正在使用NUnit.我的测试方法定义为:
[Test]
[TestCase("Fred", "Bloggs")]
[TestCase("Joe", "Smith")]
public void MyUnitTest(string firstName, string lastName)
{
...
}
Run Code Online (Sandbox Code Playgroud)
TestCase完成后,它进入TearDown方法.想要做的是将那些TestCase参数传递给测试方法,但也传递给TearDown方法.
像这样的东西:
[TearDown]
public void TearDown(string firstName, string lastName)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我希望NUnit支持这种开箱即用的功能.否则,我需要在测试方法中编写定制代码,以将测试数据存储在集合中.然后在TearDown方法中使用该集合.
如果有人有任何想法..会很棒!谢谢.基督教
为测试夹具中的每个测试执行TearDown和SetUp.考虑您有以下测试:
[TestCase("Joe", "Smith")]
public void Test1(string firstName, string lastName) { ... }
[Test]
public void Test2() { ... }
[TestCase(10)]
public void Test3(int value) { ... }
Run Code Online (Sandbox Code Playgroud)
TearDown方法的预期签名是什么?
所以,答案是否定的.NUnit不提供将测试参数传递给TearDown方法的默认方式.我认为不会.您需要手动添加此功能.
实际上,这是可能的。
如果您TestContext.CurrentContext.Test.Name
在 TearDown 中引用,您可以获得包含传递给它的参数的完整方法签名。你将不得不解析它,但它就在那里。
可以直接从函数中将参数引用到Test TestContext
中TearDown
.
像这样的东西.
[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;
}
Run Code Online (Sandbox Code Playgroud)
应当指出的是,TestContext.CurrentContext.Test.Arguments
仅仅是一个对象数组,并会被要求在每个测试TestFixture
,无论个人签名的,所以我们应该要小心,以确保我们应对所有可能的值,Arguments[]
但可以肯定的是能够引用的这些对象TearDown
功能
归档时间: |
|
查看次数: |
2958 次 |
最近记录: |