NUnit 测试中未调用 OnTearDown
OnTearDown not being called in NUnit test
我要使用 NUnit 和 FakeItEsay 进行单元测试。我有一个问题,因为我已经在测试的 OnTearDown 中初始化了一些对象,希望这些对象可以随时用于我编写的所有测试。
我在测试中遇到错误,因为在任何测试中都没有初始化对象。
我是不是漏掉了什么?
using FakeItEasy;
using NUnit.Framework;
[TestFixture]
public classs A
{
obj a;
}
[TearDown]
public void OnTearDown()
{
a = new object();
}
[test]
public void testA()
{
var x = a;
// a, x are null here, why??
}
TearDown 用于清理测试方法完成后。在您的示例中,它将在 testA 完成后调用,因此属性 a 显然未初始化。
使用 SetUp Attribute to initialize your test environment. You should also consider using the OneTimeSetUp Attribute 为每个 测试夹具 调用一次初始化方法,而不是每个 测试方法 调用一次。如果您真的需要为每个测试方法初始化一次引用对象,最好在测试方法本身中显式调用初始化,因为这会减少方法之间的依赖性。
我要使用 NUnit 和 FakeItEsay 进行单元测试。我有一个问题,因为我已经在测试的 OnTearDown 中初始化了一些对象,希望这些对象可以随时用于我编写的所有测试。
我在测试中遇到错误,因为在任何测试中都没有初始化对象。
我是不是漏掉了什么?
using FakeItEasy;
using NUnit.Framework;
[TestFixture]
public classs A
{
obj a;
}
[TearDown]
public void OnTearDown()
{
a = new object();
}
[test]
public void testA()
{
var x = a;
// a, x are null here, why??
}
TearDown 用于清理测试方法完成后。在您的示例中,它将在 testA 完成后调用,因此属性 a 显然未初始化。
使用 SetUp Attribute to initialize your test environment. You should also consider using the OneTimeSetUp Attribute 为每个 测试夹具 调用一次初始化方法,而不是每个 测试方法 调用一次。如果您真的需要为每个测试方法初始化一次引用对象,最好在测试方法本身中显式调用初始化,因为这会减少方法之间的依赖性。