2010-02-12 33 views
14

chỉnh sửa: lưu ý, câu hỏi 288.805 là tương tự, tuy nhiên, tôi đặc biệt đang hỏi làm thế nào MSTest chọn mặc định để thử nghiệm. Vui lòng xem phần còn lại của câu hỏi này. Cảm ơn bạn Eilon cho the link.MSTest xác định thứ tự để chạy các phương pháp thử nghiệm như thế nào?

Tôi đang xem dự án MSTest kế thừa. Các thử nghiệm luôn chạy theo cùng thứ tự. Thứ tự không phải là chữ cái và đã nảy ra giữa các phương thức trong hai tệp * .cs TestMethod.

Tôi không thay đổi thứ tự vật lý của mã di sản . Tôi đã làm cho tiện ích của tôi nối thêm "MSTest01" vào tên phương thức của thử nghiệm đầu tiên, "MSTest02" vào tên phương thức của thử nghiệm thứ hai, vân vân.

Tôi rất ngạc nhiên, thứ tự thực hiện của các chức năng TestMethod đã thay đổi; # 3 đầu tiên, # 6 giây, # 5 thứ ba, và cetera.

Khi tôi loại bỏ các "MSTestnn" chuỗi từ tên hàm TestMethod, trình tự thực hiện của họ thay đổi lại thứ tự trước đó, tức là, một thử nghiệm từ file .cs đầu tiên, hai bài kiểm tra từ các cs thứ hai tệp, năm thử nghiệm từ tệp.cs đầu tiên, v.v.

Dường như vị trí tập tin có thể không là một yếu tố khi TestMethod tên hàm thể là một yếu tố.

CÂU HỎI: bất kỳ ai có thể giải thích cách MSTest quyết định thứ tự thực thi chức năng TestMethod không?

+4

Thông thường bạn không nên quan tâm đến thứ tự các bài kiểm tra đơn vị của bạn chạy. Điều đó đang được nói, đó là một câu hỏi hấp dẫn. – Mathias

+1

@ Mathias Tôi đồng ý. Tôi thích cách xUnit.net chạy thử nghiệm theo thứ tự ngẫu nhiên. Thứ tự ngẫu nhiên là lựa chọn tốt nhất bởi vì nó có khả năng tiết lộ các phụ thuộc trình tự không nên tồn tại. Xem nhận xét của tôi về Troy. – gerryLowry

+0

? lạ, ý kiến ​​của tôi với Troy dường như đã biến mất, cùng với câu hỏi của anh ấy. – gerryLowry

Trả lời

6

Tôi tin rằng MSTest thực hiện các phương pháp thử đặt hàng chúng bằng 'ID' của chúng (có vẻ là không gian tên đầy đủ của chúng).

Tôi đã tạo một TestProject1 chứa 4 cho các thử nghiệm (UnitTest1, ... 2, ... A, ... B). Mỗi bài kiểm tra đơn vị có 5 phương pháp kiểm tra (TestMethodA, ... B, ... 1, ... 2, ... 3). Họ được tuyên bố với thứ tự ngẫu nhiên trong các lớp thi của họ. Bây giờ, mỗi lần tôi chạy MSTest, các thử nghiệm được thực hiện theo cùng một thứ tự:

TestProject1.UnitTest1.TestMethod1 
TestProject1.UnitTest1.TestMethod2 
TestProject1.UnitTest1.TestMethod3 
TestProject1.UnitTest1.TestMethodA 
TestProject1.UnitTest1.TestMethodB 
TestProject1.UnitTest2.TestMethod1 
TestProject1.UnitTest2.TestMethod2 
TestProject1.UnitTest2.TestMethod3 
TestProject1.UnitTest2.TestMethodA 
TestProject1.UnitTest2.TestMethodB 
TestProject1.UnitTestA.TestMethod1 
TestProject1.UnitTestA.TestMethod2 
TestProject1.UnitTestA.TestMethod3 
TestProject1.UnitTestA.TestMethodA 
TestProject1.UnitTestA.TestMethodB 
TestProject1.UnitTestB.TestMethod1 
TestProject1.UnitTestB.TestMethod2 
TestProject1.UnitTestB.TestMethod3 
TestProject1.UnitTestB.TestMethodA 
TestProject1.UnitTestB.TestMethodB 

Cách duy nhất để thay đổi thứ tự đó là đổi tên một TestClass hoặc TestMethod. Nếu ví dụ tôi đổi tên TestMethodB, của UnitTest1, thành TestMethod4 nó sẽ được thực thi trước TestMethodA.

Để xem ID của phương pháp thử, hãy mở cửa sổ 'Xem thử nghiệm' từ VS và sau đó nhấp chuột phải vào tiêu đề cột (ví dụ: Tên kiểm tra) -> "Thêm/xóa cột ..." và thêm 'ID ' cột.

+3

Hành vi này không được chỉ định và có thể thay đổi mà không cần thông báo. –

+0

Làm cách nào để bạn có được MSTest để thực hiện lệnh thực thi thực tế? Tôi đang cố gắng đạt được điều tương tự ở đây: https://stackoverflow.com/questions/48379363/how-to-output-the-execution-order-of-unit-tests-in-visual-studio-2017 – philreed

2

Đối với VSTest trật tự thực hiện. Sau đây là cách nó được tổ chức trong TestProject của bạn:

  1. Sắp xếp cs-file trong dự án của bạn bằng cách ASC TẠO Thời gian của họ
  2. Phương Chức vụ trong mỗi tập tin

Ví dụ, bạn có 3 file cs trong dự án.

  • UnitTest1.cs - tạo 01/01/1970 với các phương pháp TestMethod05 và TestMethod03
  • UnitTest2.cs - tạo 1970/05/01 với phương pháp TestMethod02.
  • UnitTest3.cs - được tạo 03/01/1970 với phương pháp TestMethod01.

Sau đó, thứ tự thực hiện kiểm tra là:

TestProject1.UnitTest1.TestMethod05 
    TestProject1.UnitTest1.TestMethod03 
    TestProject1.UnitTest3.TestMethod01 
    TestProject1.UnitTest2.TestMethod02 

Bạn có thể xem 'thứ tự mặc định' sử dụng lệnh:

vstest.console.exe TestProject1.dll/ListTests

+0

Có cách nào để thay đổi thứ tự mặc định trong vstest, khác mà cố gắng gây rối với thời gian tạo tập tin (xóa, tạo lại)? – Razkar

+0

Bạn có thể thử sử dụng Danh sách bài hát. Nhấp chuột phải vào phương pháp Test trong Test Explorer => Add to playlist => Danh sách phát mới –

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