【问题标题】:OnTearDown not being called in NUnit testOnTearDown 未在 NUnit 测试中调用
【发布时间】:2018-08-16 10:52:14
【问题描述】:

我将使用 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??
}

【问题讨论】:

  • OnTearDown 在所有测试之后运行,所以它们在运行之前当然是空的。

标签: c# nunit


【解决方案1】:

TearDown 用于在测试方法完成后进行清理。在您的示例中,它将在 testA 完成后调用,因此属性 a 显然未初始化。

使用SetUp Attribute 初始化您的测试环境。您还应该考虑使用OneTimeSetUp Attribute 来为每个测试夹具调用一次初始化方法,而不是每个测试方法调用一次。如果您确实需要为每个测试方法初始化一次引用的对象,最好在测试方法本身中显式调用初始化,因为这样可以减少方法之间的依赖关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2011-10-12
    • 1970-01-01
    相关资源
    最近更新 更多