我应该在哪里放置应该只运行一次的代码(而不是每个类一次)?一个例子是初始化DB连接字符串的语句。而且我只需要运行一次,我不想在每个“TestFixture”类中放置一个新方法来做到这一点。
答案 0 :(得分:57)
[SetUpFixture]
属性允许您为同一命名空间下的所有测试运行一次设置和/或拆解代码。
Here是SetUpFixture
上的文档。根据文件:
任何命名空间之外的SetUpFixture为整个程序集提供SetUp和TearDown。
因此,如果您需要SetUp
和TearDown
进行所有测试,那么只需确保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)
[SetUpFixture]
public class TestLogging
{
[OneTimeSetUp]
public void Setup()
{
DoStuff();
}
}