TestFixtureSetup和TestFixtureTearDown不会为每个TestCase运行
本文关键字:TestCase 运行 TestFixtureTearDown TestFixtureSetup | 更新日期: 2023-09-27 18:17:27
我在一个TestFixture中有几个TestCase。我也有一个TestFixtureSetup方法(Setup())和TestFixtureTearDown方法(TearDown())。但是,当运行所有测试时,SetUp()和TearDown()只运行一次,而不是每次执行TestCase。这是预期的行为吗?如果是,是否有一种方法使每次TestCase运行时都运行这些方法?
带有[TestFixtureSetUp]
和[TestFixtureTearDown]
装饰的方法在所有测试中只运行一次。使用[SetUp]
和[TearDown]
修饰的方法在每个测试用例之前和之后运行,因此您希望使用它们。
Dispose
方法。方法名与修饰它们的属性相对应:
NUnitTestClass..ctor
NUnitTestClass.TestFixtureSetUp
NUnitTestClass.SetUp
NUnitTestClass.TestMethod1
NUnitTestClass.TearDown
NUnitTestClass.SetUp
NUnitTestClass.TestMethod2
NUnitTestClass.TearDown
NUnitTestClass.TestFixtureTearDown
NUnitTestClass.Dispose
你所描述的是预期的行为。根据Nunit文档:
[TestFixtureTearDownAttribute]在TestFixture内部使用,以提供一组函数,在所有测试完成后执行一次。
如果你想为每个测试运行一些东西,我建议创建一个实现IDisposable的类。假设它叫TestSpan之类的。然后你可以这样做:
[TestFixture]
public class Tests()
{
[TestCase]
public void MyTest()
{
var span = new TestSpan()
using(span)
{
// Do test stuff
}
}
}
public class TestSpan: IDisposable
{
TestSpan()
{
// Do Test Setup Stuff
}
Dispose()
{
// Do Test Cleanup Stuff
}
}