【问题标题】:Nancy.Testing seems slow, is there anything I'm should be doing to improve performance?Nancy.Testing 似乎很慢,我应该做些什么来提高性能?
【发布时间】:2014-09-06 18:05:46
【问题描述】:

我喜欢 Nancy.Testing,这是测试我的应用程序的绝佳方式。但是,我发现它很慢。我的一个测试装置使用 Browser 对象进行了 26 次测试,大约需要 1 分 20 秒。

我正在测试夹具设置中创建单个 ConfigurableBootstrapper 和 Browser 对象,并且我正在为每个请求(每个测试夹具)重用它们。我试过只加载一个模块而不是所有可发现的,但这没有任何区别。

我的存储库接口确实有很多 Mocks,它们被加载到 ConfigurableBootstrapper 中,当然一旦加载它们就不会影响速度?另外,大多数测试都使用 css 选择器,这会不会很慢?

环境简述: 测试框架:Nunit 模拟框架:起订量 引导程序:可配置引导程序 南希版本:0.23 测试运行者:Resharper/Teamcity

是否应该做些什么来加快测试速度?

【问题讨论】:

    标签: testing nancy


    【解决方案1】:

    我遇到了同样的问题。我的十四次测试用了三分钟多。它太慢了,以至于在编写更多单元测试之前,我开始寻找解决方案。这启发了我去发现什么是缓慢的原因。 在优化测试之前,我的代码是:

    var browser = new Browser(new DefaultNancyBootstrapper());
    

    优化后我的代码变成了

    var browser = new Browser(with => with.Module(new SomeModule()));
    

    var browser = new Browser(with => with.Modules(typeof(SomeModule), typeof(AnotherModule)));
    

    就是这样。那些需要 180 多秒的测试现在只需要 3.8 秒。

    【讨论】:

      【解决方案2】:

      得到了这个问题的答案。问题在于正在加载的依赖项的数量。

      我在 ConfigurableBootstrapper 中有以下几行

      with.AllDiscoveredModules();
      with.EnableAutoRegistration();
      

      这会将整个 Universe 加载到测试实例中。

      我删除了这些行并手动添加了几乎逐个测试所需的依赖项。我还在我的应用程序中进行了一些重构,以减少为满足每个请求而注入的依赖项的数量。例如。如果您正在编辑客户记录,则可能不需要产品存储库,因此我拆分了几个类以更加专注(无论如何,这是一种代码味道)

      测试时间从 8 分钟减少到 1.5 分钟

      字是你可以走得更远:

      with.DisableAutoRegistrations();
      

      【讨论】:

      • relevant link 有一些很好的例子。 this link 还解释了每次测试运行创建一次此浏览器如何对性能产生显着影响(甚至比我的经验中的答案(20 分钟,缩短到 2 分钟))
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多