Nunit的一次性初始化

cod*_*nja 54 .net c# nunit

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

Ben*_*ein 61

[SetUpFixture]属性允许您为同一命名空间下的所有测试运行一次安装和/或拆卸代码.

是关于的文档SetUpFixture.根据文件:

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

因此,如果您需要SetUp并且TearDown针对所有测试,那么只需确保SetUpFixture该类不在命名空间中.

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

  • 根据[NUnit docs](http://www.nunit.org/index.php?p=setupFixture&r=2.5.5):"任何命名空间之外的SetUpFixture为整个程序集提供SetUp和TearDown." 因此,如果您需要SetUp和TearDown进行所有测试,那么只需确保SetUpFixture类不在命名空间中. (3认同)
  • 这些是 NUnit 3+ 的 SetupFixture 属性的更新文档:https://github.com/nunit/docs/wiki/SetUpFixture-Attribute 最大的变化是您必须使用 [OneTimeSetup] 和 [OneTimeTearDown] 属性在实际的方法,而不仅仅是 [SetUp] 和 [TearDown]。 (2认同)

Jam*_*Ide 42

创建一个类(我称之为我的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()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

  • NUnit v3略微更改了属性.见[v3 docs](https://github.com/nunit/nunit/wiki/SetUpFixture-Attribute) (4认同)

K0D*_*0D4 13

NUnit 3:

[SetUpFixture]
public class TestLogging
{
    [OneTimeSetUp]
    public void Setup()
    {
        DoStuff();
    }
}
Run Code Online (Sandbox Code Playgroud)