可以将nunit配置为每个fixture(或每个测试)删除app域

Ral*_*ton 6 .net nunit

在测试单例类时,我们需要单个实例在每次测试后"消失".有没有办法配置nunit在每次测试后重新创建测试应用程序域,或者至少在每次测试后?

Gro*_*ile 5

通过条件方法进行测试时,您可以提供更新单例实例的方法。

//  CUT
public sealed class Singleton{

    private static Singleton _instance = new Singleton();

    private Singleton()
    {
         //  construct.
    }

    public static Singleton Instance{
        get{
            return _instance;
        }
    }

    [Conditional ("DEBUG")]
    public static void FreshInstance (){
          _instance = new Singleton();
    }
}


//  NUnit
[TestFixture]
public class SingletonTests{

    [SetUp]
    public void SetUp(){
        Singleton.FreshInstance();
    }
}
Run Code Online (Sandbox Code Playgroud)


Pad*_*ker 0

我想我在这里遗漏了一些东西,拉尔夫。只是为了我自己的利益,您能否解释一下为什么向您的测试类添加具有以下属性的方法来删除并重新创建您的实例对您不起作用?

为方法添加这些属性应该使它们在每次测试之前/之后运行。

[SetUp]

[TearDown] 
Run Code Online (Sandbox Code Playgroud)

为方法添加这些属性应该使它们在夹具之前/之后运行。

[TestFixtureSetUp]

[TestFixtureTearDown]
Run Code Online (Sandbox Code Playgroud)

使用具有这些属性的方法无法在测试之间创建和销毁域是否有原因?