TestFixtureSetup 和 TestFixtureTearDown 不对每个 TestCase 运行
TestFixtureSetup and TestFixtureTearDown do not run for each TestCase
我在一个 TestFixture 中有多个 TestCase。我还有一个 TestFixtureSetup 方法 (Setup()) 和 TestFixtureTearDown 方法 (TearDown())。但是,当 运行 执行所有测试时,SetUp() 和 TearDown() 仅 运行 一次,而不是每次执行 TestCase 时。这是预期的行为吗?如果是,有没有办法让方法 运行 每次 TestCase 运行s?
带有 [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] is used inside a TestFixture to provide a single set of functions that are performed once after all tests are completed.
如果你想为每个测试 运行 做些什么,我建议创建一个 class 来实现 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
}
}
我在一个 TestFixture 中有多个 TestCase。我还有一个 TestFixtureSetup 方法 (Setup()) 和 TestFixtureTearDown 方法 (TearDown())。但是,当 运行 执行所有测试时,SetUp() 和 TearDown() 仅 运行 一次,而不是每次执行 TestCase 时。这是预期的行为吗?如果是,有没有办法让方法 运行 每次 TestCase 运行s?
带有 [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] is used inside a TestFixture to provide a single set of functions that are performed once after all tests are completed.
如果你想为每个测试 运行 做些什么,我建议创建一个 class 来实现 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
}
}