2010-01-13 36 views
14

Có API nào để chạy Kiểm tra đơn vị Visual Studio lập trình không?Có API nào để chạy Kiểm tra Đơn vị Visual Studio theo lập trình không?

Chạy MSTests.exe với Process.Start() không hoạt động trong trường hợp hiện tại. Những gì tôi đang tìm kiếm là một cái gì đó giống như NUnit SimpleTestRunner.

Bất kỳ ý tưởng nào?

/Erik

+3

Trùng lặp http://stackoverflow.com/questions/1564681/running-vsts-tests-without-mstest-exe –

+0

Điều này cũng khiến tôi khó chịu, vì vậy tôi đã nêu lên 'yêu cầu bằng giọng nói của người dùng'. Nếu bạn đang đọc điều này, và cảm thấy mạnh mẽ, bạn có thể bỏ phiếu cho nó? https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4619858-mstest-api –

Trả lời

10

Bạn chính xác ở chỗ không có API công khai cho khung mstest. Tôi đã viết một thay thế thủ công cho mstest một ngày để xem nó cứng như thế nào, và nó không đơn giản như nó trông (đặc biệt nếu bạn muốn tận dụng nhiều hơn một lõi CPU), vì vậy hãy cẩn thận đi xuống con đường này.

Cá nhân tôi luôn chạy mstest.exe theo cách lập trình và sau đó phân tích cú pháp tệp kết quả .trx XML. Có lý do cụ thể nào khiến bạn không thể sử dụng Process.Start để chạy không?

P.S. Một số hành vi kỳ lạ của MSTest.exe được giải quyết nếu bạn vượt qua các tham số dòng lệnh /noisolation - cho rằng một đi nếu bạn cảm thấy nghiêng như vậy :-)


Cập nhật: Erik đề cập đến ông muốn chạy API kiểm tra trong chuỗi hiện tại để anh có thể đặt văn bản chuỗi cho các vấn đề toàn cầu hóa.

Nếu bạn chạy thử nghiệm đơn vị trong trình gỡ rối, bạn sẽ nhận thấy rằng mstest tạo một chuỗi chủ đề và chạy tất cả các thử nghiệm của bạn trong các chuỗi khác nhau, vì vậy điều này không có khả năng hoạt động ngay cả khi bạn có thể truy cập API .

Những gì tôi muốn đề nghị làm điều này là: ứng dụng "Á hậu"

  1. Từ thử nghiệm của bạn, thiết lập một biến môi trường
  2. Run MSTest trỏ nó vào các bài kiểm tra cụ thể
  3. Thêm một [ClassInitialize] (hoặc [TestInitialize]) phương pháp đọc biến môi trường này và đặt văn hóa
  4. Lợi nhuận!
+0

Tôi cần chạy mstest trong chuỗi hiện tại để tôi có thể đặt văn hóa trong đó các thử nghiệm chạy. Chúng tôi có một số mã văn hóa nhạy cảm mà chúng tôi muốn chạy dưới nhiều nền văn hóa. Loại hành vi lạ nào được giải quyết bằng/noisolation? –

+0

nếu bạn không thiết lập/noisolation, mstest tạo ra một bó toàn bộ các chủ đề bổ sung và appdomains và mọi thứ. Điều này gây ra các công cụ bảo hiểm mã như ncover và partcover để thất bại. –

+0

Cảm ơn thông tin! Luôn luôn tốt đẹp để có được một sự hiểu biết sâu sắc hơn cho các công cụ bạn sử dụng. Giải pháp của bạn cho thingy văn hóa là nhiều hơn hoặc ít hơn những gì chúng tôi đã kết thúc thực hiện, vì chúng tôi không thể làm cho nó chạy trong thread hiện tại. Tuy nhiên, nó sẽ là tốt đẹp để không phải dựa vào một cơ chế tín hiệu bên ngoài. –

0

Tại sao không sử dụng Reflector và nhìn thấy như thế nào NUnit SimpleTestRunner đang chạy các bài kiểm tra ... Và sau đó sử dụng kỹ thuật này ...

+0

Đào với Reflector là một ý tưởng tuyệt vời. Tuy nhiên, NUnit SimpleTestRunner sử dụng API thử nghiệm NUnit, mà bất cứ ai cũng có thể sử dụng. Vấn đề là VSTest dường như không có API tương ứng. –

3

Sau khi tham gia một lặn sâu với phản xạ vào MSTest.exe và sâu hơn vào ngăn xếp Kiểm tra đơn vị Visual Studio, tôi thấy rằng API được MSTest sử dụng được niêm phong và được đặt riêng để tôi không thể sử dụng từ bên ngoài.

0

Bạn có thể sử dụng API REST của Microsoft cho TFS để chạy thử nghiệm ms. Vui lòng tham khảo tài liệu here.

Tôi đã liên kết với "Gọi API còn lại" để bạn có thể xem cách bạn muốn gọi một trong các API REST cho TFS.

Lưu ý rằng nếu các thử nghiệm của bạn được liên kết với bản dựng, chúng sẽ tự động chạy mỗi khi một bản dựng được xếp hàng đợi.

Đây là liên kết đến Run Functional Tests.

Tôi cũng đã phát hiện ra một bài viết về cách sử dụng API SDK TFS để chạy thử nghiệm. Đây là liên kết đó: Link to API Article

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