使用不同的环境设置使所有测试运行多次

时间:2016-02-01 09:41:34

标签: c# unit-testing testing nunit

所有测试在我的系统中创建相同的“根对象”,“根对象”具有多种模式。我需要每个测试来检查每种模式的所有内容。所以我决定在“根对象”中创建一个内部静态属性,我可以在其中覆盖创建时使用的模式。

现在测试行为取决于环境设置。我有相当多的测试,我无法修改每个测试以针对每种可能的模式测试相同的事情。

相反,我想在一个地方设置模式。

当我在R#中点击“Run All Tests”时,我希望所有测试都针对每个静态设置模式运行一次。

有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以在NUnit中通过在测试定义的命名空间层次结构的所需级别创建SetUpFixture来执行此操作。该fixture的OneTimeSetUp方法准备环境,OneTimeTearDowm方法在必要时清除它。如果要为整个程序集执行此操作,只需使用任何名称空间外的SetUpFixtureAttribute定义类。

[SetUpFixture]
public static class MySetUpFixture
{
    [OneTimeSetUp]
    public static void SetUpTestEnvironment()
    {
        // Set up the environment, possibly leaving information
        // for the tests to use in static fields or properties.
    }

    [OneTimeTearDown]
    public static void CleanUpEnvironment()
    {
        // If any cleanup is needed, do it here
    }
}

类和方法不必是静态的,但使用static会让您记住SetUpFixture实例和TestFixture实例之间没有通信这一事实。

您的测试可以简单地使用SetUpFixture创建的环境,也可以查询类的静态属性以更改其行为。