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

标签 c# unit-testing testing nunit

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

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

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

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

可以吗?

最佳答案

您可以在 NUnit 中执行此操作,方法是在您的测试定义的命名空间层次结构的所需级别创建一个 SetUpFixture。该装置的 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
    }
}

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

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

关于c# - 使用不同的环境设置使所有测试运行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35127219/

相关文章:

css - 如何*自动*测试不同浏览器(包括 Safari Mobile 和 Android 浏览器)中的 CSS 渲染?

java - 对将序列化对象写入文件的方法进行单元测试

unit-testing - 使用谷歌验证器进行单元测试

java - JUnit @RepeatedTest 用于并发执行

c# - 在装配信息中动态显示当前年份

c# - 以编程方式测试 asp.net 页面

database - 有什么好的姓氏数据库吗?

javascript - JsonConvert.DeserializeObject 在将字符串转换为日期时抛出错误

c# - 将按钮放在右下角的 XAML 代码

c# - 删除不必要的命名空间(使用)指令是否有性能提升?