使用 gulp 将业力测试拆分为可运行块的最佳方法是什么?
What is the best way using gulp to split karma tests into runnable chunks?
我们有一个 AngularJS 项目,大约有 20K LOC 和 80% 的测试覆盖率,所以我们有比 Karma 将 运行 放在一个组中的测试多得多。我们已经研究过修复内存泄漏,但是在 AngularJS 注入器、ui-路由器和每个描述和规范的闭包之间,感觉这个问题太大而无法修复。
因此,我们采取了将测试分成几组的方法。在一个组开始超过大约 1,200 个测试之前,这种方法一直有效,然后它开始变慢,直到我们添加的数量足以最终导致浏览器崩溃。
我最近摆脱了拆分测试的手动管理,只是让 gulp 遍历每个源目录并为每个目录创建一个 gulp.task 的任务。
它有效,但感觉就像我在反对 gulp 想要的工作方式,而不是让它为我工作。
是否有插件或更好的方法来解决这个问题?
您可以使用 karma-parallel 跨多个浏览器实例拆分您的测试。它在不同的浏览器实例中运行规范并且非常简单且易于安装:
npm i karma-parallel
然后将 'parallel' 添加到 karma.conf.js
中的框架列表
module.exports = function(config) {
config.set({
frameworks: ['parallel', 'jasmine']
});
};
披露:我是作者
我们有一个 AngularJS 项目,大约有 20K LOC 和 80% 的测试覆盖率,所以我们有比 Karma 将 运行 放在一个组中的测试多得多。我们已经研究过修复内存泄漏,但是在 AngularJS 注入器、ui-路由器和每个描述和规范的闭包之间,感觉这个问题太大而无法修复。
因此,我们采取了将测试分成几组的方法。在一个组开始超过大约 1,200 个测试之前,这种方法一直有效,然后它开始变慢,直到我们添加的数量足以最终导致浏览器崩溃。
我最近摆脱了拆分测试的手动管理,只是让 gulp 遍历每个源目录并为每个目录创建一个 gulp.task 的任务。
它有效,但感觉就像我在反对 gulp 想要的工作方式,而不是让它为我工作。
是否有插件或更好的方法来解决这个问题?
您可以使用 karma-parallel 跨多个浏览器实例拆分您的测试。它在不同的浏览器实例中运行规范并且非常简单且易于安装:
npm i karma-parallel
然后将 'parallel' 添加到 karma.conf.js
中的框架列表module.exports = function(config) {
config.set({
frameworks: ['parallel', 'jasmine']
});
};
披露:我是作者