【发布时间】:2016-09-13 11:09:59
【问题描述】:
我们使用 karma 作为 jasmine 单元测试的测试运行器,测试 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'
}
})
}
【问题讨论】:
-
首先,恭喜您如此专注于单元测试。 6K是一个很大的数字。现在,关于速度慢,有一个已知问题是当 karma 选项卡不在焦点上时,测试执行速度很慢,特别是在 chrome 上。如果您手动运行,请确保您的 chrome 业力标签处于焦点位置。
-
我们确实以 Chrome 选项卡为中心运行测试,但它们仍然运行缓慢。我们也尝试过使用 Phantomjs,但它们同样慢。是否有 Karma 报告器来监控测试执行?
标签: javascript angularjs unit-testing karma-runner karma-jasmine