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

syn*_*317 8 c# nunit

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

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

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

Cha*_*lie 10

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

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


Art*_*aca 8

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

像这样的东西:

[TestFixture]
class SomeTests
{
    [SetUp]
    public void SetupBeforeEachTest()
    {
        //Some code
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

[TestFixture]
class SomeTests : BaseTestFixure
{
    //Tests
}
Run Code Online (Sandbox Code Playgroud)