Nunit - 在每次测试之前执行的全局方法

时间:2016-02-26 15:31:57

标签: c# nunit

是否有可能使用Nunit定义一个方法,该方法将在组件中的每个测试之前执行?

要非常明确:我不想在所有测试之前执行一些一些,但我需要在每次测试之前进行一些常规设置。所以,如果我有10个测试,我希望我的方法执行10次。

很遗憾,遗传不是我的选择(我已经将它用于不同的目的,不能混用)

3 个答案:

答案 0 :(得分:8)

您可以在其Before方法中定义包含所需代码的Action Attribute。将它应用于程序集,并带有一个参数,指示它应该用于每个测试。

请注意,操作属性在NUnit 2和3之间的工作方式略有不同,因此请务必检查相应的文档级别。

答案 1 :(得分:7)

您可以使用SetupAttribute设置一个方法,该方法将在TextFixture类中的每个测试之前执行,但仅在那里。

这样的事情:

[TestFixture]
class SomeTests
{
    [SetUp]
    public void SetupBeforeEachTest()
    {
        //Some code
    }
}

我知道你说你不能使用继承,但如果你想在程序集中的每个测试之前执行一个方法,我认为这是最好的方法,因为SetUp属性是从任何基类继承的。因此,如果基类已定义SetUp方法,则将在派生类中的每个测试方法之前调用该方法:

abstract class BaseTestFixture
{
    [SetUp]
    public void SetupBeforeEachTest()
    {
        //Some code
    }
}

[TestFixture]
class SomeTests : BaseTestFixure
{
    //Tests
}

答案 2 :(得分:0)

SetUpTearDown属性。