2016-08-15 19 views
6

Tôi có một ứng dụng web sử dụng Angular 1.5 với bower/npm/gulp được mã hóa trong Typescript để làm việc xây dựng của chúng tôi. Kết thúc của chúng tôi là C# .net WebApi2. Cả hai đều được xây dựng và triển khai trên TFS2015. Các thử nghiệm C# nUnit của tôi rất dễ tích hợp như là một phần của quá trình xây dựng. Tuy nhiên, các thử nghiệm đơn vị hoa nhài Typescript khó tích hợp hơn. Làm thế nào để tôi có được các bài kiểm tra đơn vị hoa nhài Typecript của tôi để chạy như một phần của bản dựng TFS và nếu chúng thất bại, không xây dựng được? Chúng tôi có họ chạy qua một Á hậu spec Jasmine và cũng Karma nhưng không tích hợp.Làm thế nào để chạy các kiểm tra Typecript cho Jasmine Karma thông qua một quá trình xây dựng TFS

Tôi đã đọc nhiều bài đăng trên StackOverflow tích hợp các bài kiểm tra đơn vị Javascript và mỗi đại lộ đưa tôi qua một giải pháp quá phức tạp không hoạt động. Chúng bao gồm các kịch bản Powershell, Chutzpah amoungst những người khác.

Trả lời

7

Thay vì cố gắng tạo lại Specrunner qua Chutzpah trên máy chủ xây dựng, điều mà tôi thấy khó cấu hình và hoạt động. Mục đích là để có được nghiệp để xuất các bài kiểm tra đang chạy trong định dạng kiểm tra 'trx' mà TFS nhận ra và sau đó xuất bản chúng lên bản dựng. Xin lưu ý tôi đang sử dụng PhantomJs để chạy thử nghiệm của tôi thông qua Karma nhưng sẽ không bao gồm ở đây vì nó cũng được bảo hiểm ở nơi khác.

1) cài đặt karma-trx-reporter plugin qua NPM vào dự án của bạn trên web (hoặc plugin tương tự)

2) Cấu hình Karma.config để bao gồm các phóng viên 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) Tạo một Gulp (hoặc grunt) nhiệm vụ để chạy các bài kiểm tra nghiệp nếu bạn chưa có. Chạy tác vụ cục bộ và kiểm tra nó tạo ra 'test-results.trx' được chỉ định ở trên. (Nó không quan trọng mà tập tin được tạo ra trên máy chủ xây dựng):

gulp.task('test', function() { 
    return gulp.src(['tests/*.js']).pipe(karma({ 
     configFile: __dirname + '/Testing/karma.config.js', 
     singleRun: true 
    })); 
}); 

4) Thêm một Gulp (hoặc Grunt) TFS xây dựng nhiệm vụ để chạy các bài kiểm tra nghiệp tạo ra trong bước trước và sản lượng TRX tập tin. enter image description here

5) Thêm công việc xây dựng TFS Gulp (hoặc Grunt) để xuất bản kết quả kiểm tra và hợp nhất chúng vào bản dựng. Lưu ý rằng đường dẫn "Tệp kết quả thử nghiệm" là một thẻ hoang dã **/*. Trx để tìm bất kỳ tệp trx nào trong đường dẫn xây dựng (tức là tìm tệp đã tạo trước đó của chúng tôi). "Kết quả kiểm tra kết hợp" được chọn để Hợp nhất cả chạy thử nghiệm Jasmine của chúng tôi và thử nghiệm C# của chúng tôi chạy vào cùng một phiên. "Tiếp tục lỗi" là không đúng để đảm bảo bất kỳ lỗi thử nghiệm hoa nhài nào phá vỡ bản dựng.

enter image description here

Bạn sẽ thấy hai bộ xét nghiệm đã được chạy và đưa vào như một phần của việc xây dựng!

enter image description here

+0

Cảm ơn các bước. Tôi có các bài kiểm tra nghiệp vụ chạy trên một máy ảo từ xa. Bạn có biết làm thế nào để có được chúng trở lại bộ điều khiển để xây dựng có thể tìm thấy các tập tin trx? – Aligned

+0

Hai tùy chọn bạn có; thay đổi thuộc tính outputFile của tệp Karma.config hoặc thay đổi thuộc tính Tệp kết quả xét nghiệm của tác vụ TFS Build Publish Test. Cách khác là di chuyển các thử nghiệm đang chạy của bạn đến cùng một máy với tác nhân tạo. Đó là lựa chọn ưa thích của tôi. Tôi có các plugin karma-pantomjs được cài đặt trong dự án nên không có bất kỳ tệp tải xuống bổ sung nào để chạy thử nghiệm. – sarin

+0

Đây là bài viết của tôi về những gì tôi phải làm: https://gooroo.io/GoorooTHINK/Article/17028/Karma-Test-Results-with-TFS-Build/25020#.V9vpEyErJhE – Aligned

Các vấn đề liên quan