如何通过TFS构建过程运行Jasmine \ Karma的Typescript测试
我有一个Web应用程序,它使用Angular 1.5与Typescript中的bower/npm/gulp编码来完成构建。我们的后端是一个c#.net WebApi2。两者都是在TFS2015上构建和部署的。作为构建过程的一部分,我的c#nUnit测试很容易集成。然而,打字稿茉莉花单元测试更难以整合。如何让我的Typescript茉莉花单元测试作为TFS构建的一部分运行,如果它们失败,构建失败?我们让他们跑过Jasmine Spec跑步者,也是Karma,但没有整合。如何通过TFS构建过程运行Jasmine Karma的Typescript测试
我已经阅读了整合Javascript单元测试的StackOverflow上的许多帖子,每个途径都让我通过了一个无法运行的过于复杂的解决方案。这些包括Powershell脚本,Chutzpah和其他人。
而不是试图通过构建服务器上的Chutzpah重新创建Specrunner,我发现这很难配置和工作。目标是让业力以TFS识别的'trx'测试格式输出正在运行的测试,然后将它们发布到构建版本。请注意我正在使用PhantomJs通过Karma运行我的测试,但在这里不会涉及,因为它在其他地方都很好。
1)通过安装在故宫到karma-trx-reporter plugin Web项目(或类似的插件)
2)配置Karma.config到包括TRX记者
reporters: ['dots', 'trx'],
trxReporter: { outputFile: 'test-results.trx' },
// notify karma of the available plugins
plugins: [
'karma-jasmine',
'karma-phantomjs-launcher',
'karma-trx-reporter',
],
3)创建一个咕嘟咕嘟(或咕噜)任务来运行业力测试,如果你还没有。在本地运行任务并检查它是否创建了上面指定的'test-results.trx'。 (不要紧,在构建服务器上创建的文件):
gulp.task('test', function() {
return gulp.src(['tests/*.js']).pipe(karma({
configFile: __dirname + '/Testing/karma.config.js',
singleRun: true
}));
});
4)添加咕嘟咕嘟(或咕噜声)TFS建设任务运行在上一步和输出的TRX产生的业力试验文件。
5)添加一个Gulp(或Grunt)TFS构建任务来发布测试结果并将它们合并到构建中。请注意,“测试结果文件”路径是一个通配符**/*。trx,用于查找构建路径中的任何trx文件(即查找我们以前创建的文件)。选择“合并测试结果”以将我们的Jasmine测试运行和我们的c#测试运行合并到同一个会话中。 “继续出错”不会打乱,以确保任何茉莉花测试失败都会破坏构建。
你会发现两套已运行并将其作为构建的一部分测试!
谢谢你的步骤。我有在远程虚拟机上运行的业力测试。你知道如何让他们回到控制器,所以构建可以找到trx文件? – Aligned
你有两个选择是;更改Karma.config的outputFile属性或更改“发布测试结果TFS构建”任务的“测试结果文件”属性。另一种方法是将运行测试移至与构建代理相同的机器。这是我的首选。我在项目中安装了karma-pantomjs插件,因此没有任何额外的下载\配置为了让测试运行。 – sarin
这里是我写我必须做的事情:https://gooroo.io/GoorooTHINK/Article/17028/Karma-Test-Results-with-TFS-Build/25020#.V9vpEyErJhE – Aligned