我们正在使用业力作为茉莉花单元测试的测试运行器,测试Angular应用程序。我们有超过6000个测试。 Karma运行测试的速度很慢,并且从未超过2700次测试(11分钟)。
Karma可以运行的测试数量是否有限制,或者测试运行程序的性能是否正常降低,因为测试数量会增加?
// Karma Config file
module.exports = function(config) {
config.set({
basePath: '../',
frameworks: ['jasmine'],
files: [
...list of files
],
proxies: {
'/images/': '/base/src/client/images/',
},
exclude: [
'src/client/app/window/window.js'
],
preprocessors: {
'**/*.partial.html': ['ng-html2js']
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['Chrome'],
singleRun: true,
concurrency: Infinity,
browserNoActivityTimeout: 100000,
plugins: [
'karma-jasmine',
'karma-chrome-launcher',
'karma-phantomjs-launcher',
'karma-firefox-launcher',
'karma-ie-launcher',
'karma-ng-html2js-preprocessor'
],
ngHtml2JsPreprocessor: {
moduleName: 'templates',
stripPrefix: 'src/client'
}
})
}
答案 0 :(得分:0)
为帮助减慢测试的执行速度,我发现使用ng-bullet(https://www.npmjs.com/package/ng-bullet)对加快测试速度非常有帮助。通过6k测试,转移组件可能是一项艰巨的任务,但是您应该能够一次从一个冗长的规范开始一次制作一个规范文件,以查看它对执行时间有多大帮助。
我用来帮助测试的另一件事是将测试分为套件,这样,如果测试应用程序的特定部分,则可以并行或以较小的块的形式使用多个套件。本文讨论了该概念以及如何使用ng-bullet:https://www.forbes.com/sites/forbesdigitalgroup/2019/05/14/improve-your-angular-jasmine-unit-test-speeds-by-500/#45ee76a14163