【问题标题】:Specflow how to implement AppDomain isolation with Nunit 3Specflow 如何使用 Nunit 3 实现 AppDomain 隔离
【发布时间】:2017-03-05 17:52:31
【问题描述】:

我在 Specflow 2.0、nUnit 3.X、TeamCity 和 Visual Studio 2013 中编写了自动化测试。我正在尝试并行运行测试,但由于代码使用静态类/对象而失败。

在 Specflow 网站上,建议使用 PARALLEL EXECUTION WITH MEMORY (APPDOMAIN) ISOLATION 运行线程安全测试(如果架构取决于静态) http://www.specflow.org/documentation/Parallel-Execution/

但是没有关于如何做到这一点的信息,甚至谷歌搜索我也找不到任何相关文章。

如果有人能帮助我了解我们如何做到这一点,我将不胜感激。

感谢您的帮助, 萨蒂

【问题讨论】:

    标签: appdomain specflow nunit-3.0


    【解决方案1】:

    如何配置隔离取决于您使用的测试运行器。
    我不是 100% 确定 NUnit 确实支持 appdomain 隔离,但了解 Parallelizable 属性文档是一个好的开始:https://github.com/nunit/docs/wiki/Parallelizable-Attribute

    如果您使用 SpecFlow+Runner (http://www.specflow.org/plus/),则可以进行 AppDomain 或进程分离。
    以下是 SpecFlow+Runner 中不同模式的博文:https://the-engineers.net/2016/04/08/using-specflowrunners-parallelization-features/


    完全披露:我是 SpecFlow+Runner 的开发者之一

    【讨论】:

    • 感谢 Andreas,我能够运行多个线程,但问题是测试不是线程安全的,这正是我想要实现的。不幸的是,specflow+ 是付费的,如果可以的话,我会尝试在没有它的情况下完成这项工作。
    • 作为NUnit的维护者,我可以告诉你,NUnit的并行执行不支持并行测试的AppDomain隔离,只支持测试运行本身。这是一个好主意,但由于 .NET Core 不会很快支持创建应用程序域,因此我们的优先级会降低。
    • 嘿@RobProuse,过去 7 年有什么变化吗?现在 NUnit 是否允许使用此功能?
    • @JMFS .NET Core 不会也永远不会支持 AppDomain,因此我们没有也不会向 NUnit 添加任何其他 AppDomain 功能。所有新工作将确保 NUnit 与当前版本的 .NET 兼容。
    • 对于并行运行测试,NUnit 现在确实具有FixtureLifeCycle 属性,可以轻松编写线程安全测试。看看吧。
    【解决方案2】:

    这就是为什么您不应该在代码中使用静态类的原因 静态代码(类似于全局变量)被认为是有害且难以测试的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      相关资源
      最近更新 更多