2016-08-15 42 views
6

我有一個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和其他人。

回答

7

而不是試圖通過構建服務器上的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產生的業力試驗文件。 enter image description here

5)添加一個Gulp(或Grunt)TFS構建任務來發布測試結果並將它們合併到構建中。請注意,「測試結果文件」路徑是一個通配符**/*。trx,用於查找構建路徑中的任何trx文件(即查找我們以前創建的文件)。選擇「合併測試結果」以將我們的Jasmine測試運行和我們的c#測試運行合併到同一個會話中。 「繼續出錯」不會打亂,以確保任何茉莉花測試失敗都會破壞構建。

enter image description here

你會發現兩套已運行並將其作爲構建的一部分測試!

enter image description here

+0

謝謝你的步驟。我有在遠程虛擬機上運行的業力測試。你知道如何讓他們回到控制器,所以構建可以找到trx文件? – Aligned

+0

你有兩個選擇是;更改Karma.config的outputFile屬性或更改「發佈測試結果TFS構建」任務的「測試結果文件」屬性。另一種方法是將運行測試移至與構建代理相同的機器。這是我的首選。我在項目中安裝了karma-pantomjs插件,因此沒有任何額外的下載\配置爲了讓測試運行。 – sarin

+0

這裏是我寫我必須做的事情:https://gooroo.io/GoorooTHINK/Article/17028/Karma-Test-Results-with-TFS-Build/25020#.V9vpEyErJhE – Aligned

相關問題