Nunit的一次性初始化

时间:2010-07-06 16:51:18

标签: c# .net nunit

我应该在哪里放置应该只运行一次的代码(而不是每个类一次)?一个例子是初始化DB连接字符串的语句。而且我只需要运行一次,我不想在每个“TestFixture”类中放置一个新方法来做到这一点。

3 个答案:

答案 0 :(得分:57)

[SetUpFixture]属性允许您为同一命名空间下的所有测试运行一次设置和/或拆解代码。

HereSetUpFixture上的文档。根据文件:

  

任何命名空间之外的SetUpFixture为整个程序集提供SetUp和TearDown。

因此,如果您需要SetUpTearDown进行所有测试,那么只需确保SetUpFixture类不在命名空间中。

或者,您可以始终严格定义静态类,以便定义“全局”测试变量。

答案 1 :(得分:40)

创建一个类(我称之为我的Config)并使用[SetUpFixture]属性对其进行修饰。该类中的[SetUp][TearDown]方法将运行一次。

[SetUpFixture]
public class Config
{
    [SetUp]  // [OneTimeSetUp] for NUnit 3.0 and up; see http://bartwullems.blogspot.com/2015/12/upgrading-to-nunit-30-onetimesetup.html
    public void SetUp()
    {
    }

    [TearDown]  // [OneTimeTearDown] for NUnit 3.0 and up
    public void TearDown()
    {
    }
}

答案 2 :(得分:11)

NUnit 3

[SetUpFixture]
public class TestLogging
{
    [OneTimeSetUp]
    public void Setup()
    {
        DoStuff();
    }
}