【问题标题】:AutoFixture AutoMoqData gets slow as more tests are added随着更多测试的添加,AutoFixture AutoMoqData 变慢
【发布时间】:2015-05-24 23:46:46
【问题描述】:

使用 nunit 2.6.4 和 AutoMoqData,Resharper 运行器似乎在执行单个测试之前评估要传递给所有测试的所有参数,即使我想要做的只是运行单个测试/小型套件测试。现在(我们有 1000 个测试)运行一个测试需要 2-3 分钟,这对 TDD 不起作用。

我尝试切换到 Xunit 以查看是否是 nunit 的问题,并且在运行第一个测试之前仍有很大的延迟。

这种行为是意料之中的吗?还是我们做错了什么?

【问题讨论】:

  • 您能否分享一个演示该问题的解决方案?一个我们可以在本地下载和配置文件?控制台运行程序会发生这种情况吗?
  • 又名SSCCE
  • 这不是预期的。我有各种使用 AutoFixture 和 AutoMoqData 的测试套件,在不到十秒的时间内在超极本上运行了大约一千次测试。
  • 域是一个相当复杂的 EF 图,我的原始分析指向 AutoMoqData 创建大量对象作为这里的瓶颈。我为每个对象(大约 100 个)添加了非常简单的注册,这没有任何区别,但是原始分析表明大部分时间都花在了创建 IFixture 上。现在我正在使用单例夹具(带有注册),这将测试时间缩短到更合理的 8 秒。对于 ref,使用没有注册的单例夹具对原始时序没有太大影响。
  • 使用单个固定装置的一个问题是任何冻结的服务都将永远冻结。回到绘图板...

标签: nunit autofixture automoq


【解决方案1】:

所以我的调查结果是,当 nunit 发现测试时,它会运行属性并创建对象,并且 nunit (2) 会发现所有测试,即使您只对运行 1 感兴趣。显然这会改变在 nunit 3 的某个时候。

复杂而庞大的对象图是测试速度变慢的原因,通过自定义 Autofixture 来粗暴地修剪此图,测试现在快得多(260 秒 - 8 秒)。

我尝试使用 Autofixture.AutoEntityFramework,但尽管它正在做我想要它做的事情,但速度提升不足以有效地进行 TDD(260 秒 - 大约 100 秒)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多