2012-02-14 21 views
5

Tôi đang tạo ảnh chụp màn hình khi kiểm tra đầu cuối của NUnit không thành công và tôi đang cố gắng xuất bản nó với TeamCity (tác nhân xây dựng và máy chủ đang chạy trên Windows) bằng cách sử dụng thông báo dịch vụ sau (như được mô tả here) với Console.WriteLine từ một thử nghiệm NUnit:Tại sao các tạo tác của tôi không được xuất bản trong khi xây dựng bằng cách sử dụng thông báo dịch vụ publishArtifacts xuất hiện trong TeamCity?

##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png'] 

tôi thấy dòng trong xây dựng nhật ký:

------- Stdout: ------- 
##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png'] 

Nhưng TeamCity không chọn lên các tập tin, hoặc ít nhất là nó không được hiển thị trong xây dựng hiện vật. Làm cách nào để tôi thực hiện công việc này?

+1

Có thể rằng thông điệp của bạn có chứa một số ký tự mà phải được thoát ra: http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ServiceMessages? –

+0

Không, miễn là ':' và '\\' là OK (và chúng xuất hiện) thì đó không phải là vấn đề. – GraemeF

Trả lời

0

Thử sử dụng đường dẫn tương đối. Teamcity nên giải quyết chúng chống lại thư mục làm việc xây dựng.

0

Bạn có thể thử Console.Write thay vì Console.WriteLine (xem bên dưới).

Dù sao, tôi đoán TeamCity không bẫy những thông điệp này vì chúng là 'báo cáo thử nghiệm' và được gắn thêm vào bản dựng làm văn bản.

Cảm giác của tôi là chúng không được phân tích cú pháp và sau đó không được diễn giải bởi hành vi Tương tác tập lệnh xây dựng vì cách chúng được đưa vào nhật ký dựng.

Từ Build Script Interaction (TC 7):

Tin nhắn dịch vụ được sử dụng để vượt qua các lệnh/xây dựng thông tin để TeamCity máy chủ từ xây dựng kịch bản. Để được xử lý bởi TeamCity chúng sẽ được in thành luồng đầu ra tiêu chuẩn của việc xây dựng (nếu không, nếu đầu ra không có trong cú pháp thông báo dịch vụ, nó sẽ xuất hiện trong nhật ký dựng). Một thông báo dịch vụ đơn lẻ nên không chứa ký tự dòng mới bên trong, nó không được trải rộng trên nhiều dòng.

Bạn nên đặt các tạo phẩm thử nghiệm vào một thư mục cụ thể và trì hoãn xuất bản sau khi kiểm tra.

Lưu ý rằng nếu bạn không cần phải giải quyết hiện vật động, bạn nên sử dụng cách đơn giản nhất: Artifact paths trong cài đặt chung cấu hình xây dựng.

+0

'Console.WriteLine' thêm dòng mới * sau * thông báo dịch vụ, do đó, đó không phải là vấn đề. Như báo giá cho biết, các thông báo dịch vụ chỉ cần được ghi vào luồng đầu ra tiêu chuẩn của bản dựng - cách chúng được flushed là không liên quan. Thật không may là tôi không có quyền truy cập vào dự án nữa để thử bất cứ điều gì khác: ( – GraemeF

+0

Đúng về WriteLine nó chỉ là để thử. Nó không hoạt động trên TC của tôi hoặc.Về việc loại bỏ đầu ra NUnit, nó không hoàn toàn không bị phản đối vì ** các đầu ra kiểm thử không phải là đầu ra tiêu chuẩn **, mọi khung kiểm thử nối thêm trình điều khiển riêng của nó. Nếu bạn chạy 'nunit-console.exe' bạn sẽ thấy rằng' WriteLine' từ thử nghiệm của bạn xuất hiện bằng cách nào đó với số lượng lớn. Ngoài ra, TeamCity sử dụng Á hậu NUnit của riêng mình. Lưu ý rằng những gì bạn đang cố gắng không hoạt động với MSTest. Bạn có thể thấy một cái gì đó giống như '[Test Output]' sau tên thử nghiệm của bạn và trước khi nó xuất hiện, nó có thể thất bại vì văn bản này. Có lẽ là một lỗi? – JoeBilly

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