在 xUnit.net 中的所有测试之前和之后运行代码一次

2023-11-24

TL;DR - 我正在寻找 xUnit 的 MSTest 等效项AssemblyInitialize(又名我喜欢的唯一功能)。

具体来说,我正在寻找它,因为我有一些硒烟雾测试,我希望能够在没有其他依赖项的情况下运行这些测试。我有一个 Fixture 可以为我启动 IisExpress 并在处置时杀死它。但是在每次测试之前执行此操作会极大地增加运行时间。

我想在测试开始时触发此代码一次,并在最后处理它(关闭进程)。我该怎么做呢?

即使我可以通过编程访问“当前正在运行多少个测试”之类的内容,我也可以弄清楚一些事情。


截至 2015 年 11 月,xUnit 2 已发布,因此有一种在测试之间共享功能的规范方法。有记录here.

基本上你需要创建一个类来执行固定装置:

    public class DatabaseFixture : IDisposable
    {
        public DatabaseFixture()
        {
            Db = new SqlConnection("MyConnectionString");

            // ... initialize data in the test database ...
        }

        public void Dispose()
        {
            // ... clean up test data from the database ...
        }

        public SqlConnection Db { get; private set; }
    }

一个虚拟类承载CollectionDefinition属性。 此类允许 Xunit 创建测试集合,并将为该集合的所有测试类使用给定的固定装置。

    [CollectionDefinition("Database collection")]
    public class DatabaseCollection : ICollectionFixture<DatabaseFixture>
    {
        // This class has no code, and is never created. Its purpose is simply
        // to be the place to apply [CollectionDefinition] and all the
        // ICollectionFixture<> interfaces.
    }

然后,您需要在所有测试类上添加集合名称。 测试类可以通过构造函数接收夹具。

    [Collection("Database collection")]
    public class DatabaseTestClass1
    {
        DatabaseFixture fixture;

        public DatabaseTestClass1(DatabaseFixture fixture)
        {
            this.fixture = fixture;
        }
    }

它比 MsTests 更详细一些AssemblyInitialize因为您必须在每个测试类上声明它属于哪个测试集合,但它也更具可模块化性(并且使用 MsTests,您仍然需要在您的类上放置一个 TestClass)

注:样品取自文档.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 xUnit.net 中的所有测试之前和之后运行代码一次 的相关文章

随机推荐

  • 有趣的NLP/机器学习风格项目——分析隐私政策

    我想就分配给我的一个有趣问题提供一些意见 任务是分析数百个甚至数千个隐私政策并确定它们的核心特征 例如 他们是否获取用户的位置 他们是否与第三方共享 出售 等等 我和一些人交谈过 阅读了很多有关隐私政策的内容 并且自己也思考过这个问题 这是
  • 我将如何格式化 Zend_Form_Element_Radio 以便标签跟随输入?

    Zend Form Element Radio 的默认装饰器是
  • 我的自定义 selinux 策略似乎被 Android 系统忽略

    我在基于 AOSP 的 Android 7 1 2 更准确地说是基于索尼开放设备树 上正确运行自定义 selinux 策略时遇到了一些麻烦 我的问题是审核日志不断告诉我缺少我实际添加的文件访问规则 我还将audit2allow 创建的规则复
  • 查找Excel中的重复行

    我有一个包含两行的 Excel 电子表格 一个是 name 另一个是 id 有什么方法可以找到具有完全相同 id 的行并让我轻松查看这些行吗 例如我有以下行 Name Id Hello 1 World 5 Mylo 1 Jack 6 Jil
  • VBA中日期之间的SQL查询

    我在使用 Excel 和 Access 数据库在 VBA 中进行 sql 查询时遇到问题 在 mi VBA 代码中 我有两个包含以下内容的数据变量 日期最小值 31 07 2014 22 00 00 最大日期 01 08 2014 06 0
  • SwiftUI 拖放重新排序 - 检测对象释放

    我实现了一个简单的拖放来重新排序 VStack Scrollview 中的项目 根据这个解决方案 我将当前拖动的项目存储在名为的属性中draggingItem并将不透明度设置为 0 具体取决于它是否为零 当 DropDelegate 中的
  • 返回序列中的第 N 个斐波那契数?

    我的课堂作业有一个问题 我需要知道如何使用迭代返回第 n 个斐波那契数列 不允许递归 我需要一些关于如何执行此操作的提示 以便我可以更好地了解我做错了什么 我在我的program cs中输出到控制台 因此它在下面的代码中不存在 Q1 Ret
  • 在 Python 中复制数组/列表的有效方法

    注意 我是一名 Ruby 开发人员 正在尝试在 Python 中找到自己的出路 当我想弄清楚为什么有些脚本使用mylist 代替list mylist 为了复制列表 我对各种复制方法做了一个快速基准测试range 10 参见下面的代码 ED
  • 是否可以在运行时隐藏 highcharts 中的导航器?

    我正在开发一个 highcharts 项目 我们需要在运行时显示 隐藏导航器 具体取决于屏幕过滤器的值 我们已经添加 显示 隐藏各种数据系列 但我找不到允许我在运行时动态隐藏导航器的 API 调用 有谁知道如何做到这一点 除非必须 否则我不
  • 如何在行的滑动操作配置中添加 VoiceOver 的辅助功能标签?

    我正在使用 Swift 4 创建一个 iOS 应用程序 但没有使用 Storyboard 要从表视图控制器中删除行 用户向左滑动该行 然后单击 删除 按钮 这是我用来实现该功能的代码 未使用外部库 override func tableVi
  • 是否有针对 Python、Ruby、Sql、Cobol、Perl 和 PL/SQL 的静态分析工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在寻找一个针对 Pyt
  • SQL 选择案例

    我有以下sql表 oitems table orderid catalogid numitems O737 353 1 O738 364 4 O739 353 3 O740 364 6 O741 882 2 O742
  • 使用rackup时找不到Sinatra静态资源

    我有一个简单的 Sinatra 应用程序 它是使用模块化样式配置的 当我使用启动应用程序时rackup p 4567根据自述文件中的建议 不提供公共文件夹中的静态资源 但是当我开始使用时shotgun config ru p 4567然后他
  • 获取图像大小而不加载到内存

    我有一些 png图片 ETA 但格式也可以是 JPEG 或其他格式 我将在其中显示UITableViewCells 现在 为了获得行高 我加载图像 获取它们size属性 并使用它来计算行的高度 计算沿途任何必要的更改 因为大多数图像在显示之
  • 为什么渐变不覆盖视图的整个宽度

    我正在尝试将渐变应用于限制在主屏幕的顶部 左侧和右侧的视图 但由于某种原因 渐变没有覆盖所应用视图的整个宽度 请参见中的黄色 图片 class ViewController UIViewController IBOutlet weak va
  • C++编译器会优化掉未使用的返回值吗?

    如果我有一个返回对象的函数 但调用者从未使用此返回值 编译器会优化掉副本吗 可能是总是 有时 从不的答案 基本示例 ReturnValue MyClass FunctionThatAltersMembersAndNeverFails Do
  • 使用文本框和自定义词典进行拼写会减慢我在 C# WPF 中的应用程序的速度

    我在 WinForm 应用程序中使用 WPF 文本框进行拼写检查 每次创建一个文件时 我都会将相同的文件作为 CustomDictionary 加载 直到最近一切都很好 现在 它们需要很长时间才能加载 最多一秒钟 有些表格有 30 个或更多
  • 如何强制 Facebook JS-SDK 渲染动态添加的小部件?

    应用程序内的内容正在使用 XHR 进行更新 这涉及到更改评论框的 URL div class fb comments div 页面完全加载后创建新的 Facebook 小部件占位符时 如何请求 Facebook JS SDK 在页面上呈现新
  • 如何使用最小起订量模拟控制器上下文

    我正在尝试最小起订量框架 但现在我遇到了障碍 以下单元测试失败 因为 ViewName 属性的实际值是空字符串 有人能指出我正确的方向吗 为什么这没有通过测试 TestMethod public void Can Navigate To A
  • 在 xUnit.net 中的所有测试之前和之后运行代码一次

    TL DR 我正在寻找 xUnit 的 MSTest 等效项AssemblyInitialize 又名我喜欢的唯一功能 具体来说 我正在寻找它 因为我有一些硒烟雾测试 我希望能够在没有其他依赖项的情况下运行这些测试 我有一个 Fixture