2010-11-05 47 views
21

Tôi có một bài kiểm tra đó cần phải làm việc nhiều hơn sau đó 1 phút (VS2008, MSTest, kiểm tra được đưa ra từ VisualStudio):MSTest: làm thế nào để tăng thời gian thử nghiệm

const int TestTimeout = 1; 

    [TestMethod] 
    [Timeout(10*60*1000)] // 10 minutes 
    public void Login_ExpirationFail_Test() 
    { 
     IAuthenticationParameters parameters = new AuthenticationParameters(...); 
     LdapAuthentication auth1 = new LdapAuthentication(); 
     IAuthenticationLoginResult res = auth1.Login(parameters); 

     Assert.IsNotNull(res); 
     Assert.IsFalse(string.IsNullOrEmpty(res.SessionId)); 

     const int AdditionalMilisecodns = 400; 
     System.Threading.Thread.Sleep((TestTimeout * 1000 + AdditionalMilisecodns) * 60); 

     LdapAuthentication auth2 = new LdapAuthentication(); 
     auth2.CheckTicket(res.SessionId); 
    } 

thử nghiệm này được hoàn thành trong "Run" chế độ với "Kiểm tra" Login_ExpirationFail_Test 'vượt quá thời gian chờ thực hiện. " thông báo lỗi, trong "Debug" - nó hoạt động tốt.

Tôi đã gặp một vài sự cố tương tự liên quan đến việc chạy thử nghiệm từ dòng lệnh.

Làm cách nào để thử nghiệm của tôi có thể hoạt động trong chế độ "Chạy"?

Cảm ơn.

Trả lời

17

Câu trả lời rất đơn giản: giá trị thuộc tính phải là một hằng số, không phải là một biểu thức.

Thay đổi

[Timeout(10*60*1000)] 

để

[Timeout(600000)] 

giải quyết một vấn đề.

EDIT: Nhận xét về câu trả lời đã khiến tôi chú ý một lỗi mà tôi đã thực hiện ban đầu trong câu trả lời (viết "60000" làm giá trị thời gian chờ). Trong mã nguồn của tôi, tôi có 6000000 và giá trị đó đã giúp. câu trả lời đã được sửa gần đây

+5

Toán của bạn sai. Bạn đã giảm nó bằng hệ số 10. Hơn nữa, biểu thức so với hằng số ở trên là chính xác tương đương vì trình biên dịch C# sẽ biến nó thành cùng một thứ (ngoại trừ lỗi toán học). Nếu giải pháp này làm việc, tôi nghi ngờ đó là vì lỗi toán học đã đưa giá trị xuống một cái gì đó trong phạm vi mà yêu cầu nhất. –

+0

Xin chào Andrew, cảm ơn vì đã dành sự chú ý này cho chúng tôi. Đó chỉ là một dấu vân tay trong câu trả lời. Tôi đã sử dụng toán học thích hợp trong mã nguồn của mình. Tôi không biết tại sao điều đó lại hữu ích, nhưng điều đó đã xảy ra. – Budda

+4

@Budda Đây là câu trả lời như thế nào? Tại sao, * nó phải là một hằng số *, một câu trả lời? Một biểu thức liên tục chỉ là, hằng số và như Andrew đã chỉ ra đây là những gì trình biên dịch làm anyway. Điều duy nhất bạn quản lý để thực hiện bằng cách biến điều này thành một hằng số chính là rất nhiều số 0 có thể dễ dàng bị đọc nhầm vì tôi nghĩ câu trả lời này có thể chứng thực, biểu thức là tốt và dễ đọc hơn nhiều. –

0

Không phải các bước cụ thể, nhưng sẽ chỉ cho bạn đi đúng hướng:

Thêm tệp cài đặt thử nghiệm vào giải pháp nếu bạn chưa có.

Mở trình hướng dẫn cấu hình với cài đặt thử nghiệm và tìm cài đặt kiểm soát thời gian chờ kiểm tra.

+0

Có các cài đặt như vậy trong cấu hình thử nghiệm, nhưng chúng liên quan đến tất cả các kiểm tra ... trong khi tôi muốn có thời gian chờ mở rộng chỉ cho 1 thử nghiệm ... – Budda

+0

tại sao bạn áp dụng Thời gian chờ cho const? Tôi đã không sử dụng thuộc tính đó, nhưng nó chắc chắn nên được áp dụng cho phương pháp thử nghiệm – eglasius

+0

Xin lỗi vì lỗi. Chắc chắn, [Timeout] đã được áp dụng cho phương pháp. Đây là một bản in sai (gần đây đã được sửa). – Budda

8

Ngoài việc chỉ định số giây, Timeout() hỗ trợ một hằng số cho phép chờ đợi vô hạn.

+0

Điều này không cung cấp câu trả lời cho câu hỏi.Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ. - [Từ đánh giá] (/ review/low-quality-posts/11367272) –

+0

Câu hỏi ban đầu là một vấn đề với thời gian thử nghiệm, ví dụ trong trường hợp của tôi, thử nghiệm của tôi chạy trong 3h + để câu trả lời đúng là câu trả lời đầu tiên, để đặt thời gian, câu trả lời của tôi cho biết "cũng có thể làm" có nghĩa là, nếu nhà phát triển có thử nghiệm chạy dài và không biết phải mất bao lâu, TestTimeout.Infinte là tùy chọn tốt nhất. Xin giải thích tại sao đây không phải là câu trả lời hay? –

+0

Tốt nhất là nếu câu trả lời giải thích lý do của riêng họ và không dựa vào các câu trả lời khác cho ngữ cảnh, nhưng tôi đồng ý rằng đây là một bổ sung hữu ích. Lời xin lỗi cho quá trình xem xét đôi khi hơi bối rối mà không có bối cảnh. –

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