use*_*357 9 angularjs karma-runner
我正面临这个问题,因为我创建了一堆新的指令测试(在JHipster项目中).业力单元测试由一项艰巨的任务执行.我想清楚地强调我的问题与我在GitHub上找到的这两个(以及其他一些我不被允许发布的)不同:
https://github.com/karma-runner/karma/issues/1077
https://github.com/karma-runner/karma/issues/393
不同之处在于业力从未完成执行测试,但会在循环中继续运行它们,就好像在配置的位置中存在无限数量的测试一样.可以在命令行输出中清楚地看到:
Firefox 45.0.0 (Windows 7 0.0.0): Executed 321 of 192 (skipped 7) SUCCESS (0 secs / 1 min 3.757 secs)
Chrome 51.0.2704 (Windows 7 0.0.0): Executed 399 of 192 (skipped 11) SUCCESS (0 secs / 1 min 2.239 secs)
PhantomJS 2.1.1 (Windows 7 0.0.0): Executed 444 of 192 (skipped 11) SUCCESS (0 secs / 1 min 0.515 secs)
Run Code Online (Sandbox Code Playgroud)
它会永远持续下去.经过近一个小时的执行,结果如下:
Chrome 51.0.2704 (Windows 7 0.0.0): Executed 20171 of 192 (skipped 472) SUCCESS (0 secs / 50 mins 7.281 secs)
Firefox 45.0.0 (Windows 7 0.0.0): Executed 3186 of 192 (skipped 72) DISCONNECTED (14 mins 48.503 secs / 12 mins 16.547 secs)
PhantomJS 2.1.1 (Windows 7 0.0.0): Executed 27054 of 192 (skipped 611) DISCONNECTED (48 mins 25.253 secs / 47 mins 34.776 secs)
Run Code Online (Sandbox Code Playgroud)
无论测试是通过还是失败,或者为什么它们失败(TypeError, ReferenceError...),测试都会永远运行(所有测试都通过此处,如您所见).仅当我在命令行中停止grunt任务时,执行才会停止.
在过去的几个月里,业力配置和笨拙的任务没有改变.Singlerun和autowatch设置(以及任何其他设置)无关紧要.
被测试的代码似乎无关紧要.一些变化,他们让问题消失了一段时间,但是当我写新的测试时,它总会回来.当然我起初认为我的代码是责任,但以下将说明为什么它不是一个合乎逻辑的结论.
奇怪的行为总是在创建新测试时开始,但测试代码本身似乎无关紧要,因为新测试从不使用任何特殊操作或覆盖其他测试所没有的组件.此外,即使新测试是一个完全空的函数体,它仍然会导致奇怪的行为,这表明它不是程序中的新决策路径,当测试覆盖时会导致问题.这就是为什么我不相信代码是责任.我还设法通过关闭随机测试(我们很久以前没有任何问题使用)来阻止无限执行,但是当我添加新测试时问题总是会回来.
环境无关紧要.测试在我的Windows机器和Linux服务器上的CI中无限运行.
我也认为这可能是一个内存限制问题,因为有一段时间,浏览器在与新功能或新测试无关的某个测试中崩溃(并且已经工作好几个月了).当我关闭那个测试时,问题停止了一段时间,但后来再次回来(因为我一直在写测试).
我将所有NPM软件包和Bower组件更新到最新版本,但这并没有改变无限循环.
到现在为止,我完全没有想法.有没有人遇到过这种奇怪的行为和控制台输出?
Dav*_*der 13
我们刚刚解决了这个问题.问题是我们的应用程序中有一个注销功能,它在将浏览器重定向到另一个页面之前执行各种任务.我们在logout函数周围添加的测试之一是没有模拟window.redirect调用,当从karma测试运行执行时,它导致了循环行为.
在模拟/监视此调用之后,循环行为停止.
不确定这是否与您遇到的问题相同,但希望此信息对您有所帮助!
| 归档时间: |
|
| 查看次数: |
2691 次 |
| 最近记录: |