2009-07-10 27 views
7

Tôi đang sử dụng Resharper 4.5 với Visual Studio 2008 và MBUnit thử nghiệm, và có vẻ là một cái gì đó kỳ lạ với việc sử dụng ReSharpher để chạy thử nghiệm.Resharper chạy tất cả các thử nghiệm khi chỉ có một đơn được chọn

Ở bên cạnh có các biểu tượng bên cạnh lớp mỗi phương pháp thử với các tùy chọn Chạy và gỡ lỗi. Khi tôi chọn Chạy nó chỉ cho tôi thấy kết quả của thử nghiệm đơn lẻ. Tuy nhiên tôi nhận thấy rằng thử nghiệm đã mất một thời gian khá dài để chạy.

Khi tôi chạy trình biên dịch Sql Server và bắt đầu bước qua mã, tôi nhận ra rằng nó không chỉ chạy thử nghiệm được chọn, mà là mỗi một lớp trong lớp. Có bất kỳ lý do nào khiến nó trông giống như một thử nghiệm đơn vị chạy duy nhất của nó trong khi thực sự chạy tất cả chúng?

Việc nhận được sự đau đớn chờ đợi cho tất cả các thử nghiệm tích hợp sẽ chạy khi tôi chỉ quan tâm đến việc reuslt của một, có cách nào để thay đổi điều này không?

+0

Bạn có sử dụng Gallio để chạy thử nghiệm MBUnit không? –

+1

Bạn đang sử dụng phiên bản Gallio nào? Các phiên bản cũ hơn chứa một lỗi tạo ra hành vi tương tự như những gì bạn mô tả> –

+0

Tôi đã cài đặt Gallio, nhưng tôi không nghĩ rằng tôi sử dụng nó để chạy thử nghiệm. Tôi chỉ sử dụng MBUnit exe. Làm cách nào để biết liệu VS có đang sử dụng Gallio không? Phiên bản cài đặt là 3.0.0.179. – Brandon

Trả lời

5

Tôi chỉ gặp phải hôm nay này và tôi nghĩ rằng tôi có thể đã nhận ra những gì gây ra lỗi này, tôi đã phương pháp của tôi có tên tương tự

[TestMethod] 
    public void TestSomething() 

    [TestMethod] 
    public void TestSomethingPart2() 

tôi thấy rằng chạy TestSomething() sẽ chạy cả hai, tuy nhiên chạy TestSomethingPart2() sẽ không. Tôi đã kết luận nếu bạn đặt tên cho các phương thức mà một kết hợp chính xác có thể xảy ra cho tên phương thức, nó sẽ chạy thử nghiệm. Sau khi đổi tên thử nghiệm thứ hai của tôi thành TestPart2Something, sự cố này đã biến mất.

+0

Điều đó khá thú vị. Có ai khác đã xác nhận vấn đề này không? –

+1

Tôi đã nhận thấy hành vi này mặc dù tên phương pháp của tôi hoàn toàn khác! –

+0

Bất cứ ai downvoted một điểm trong thời gian trả lời về các phiên bản cụ thể của công nghệ 7 năm sau khi câu hỏi đã được hỏi ... bạn chỉ ngớ ngẩn –

0

Khi bạn nhấp chuột phải vào trình chỉnh sửa, menu ngữ cảnh xuất hiện để bạn có thể chạy và gỡ lỗi các kiểm tra. Nhấp chuột phải vào bên trong một phương pháp thử để chạy hoặc gỡ lỗi thử nghiệm đơn lẻ đó. Nhấp chuột phải vào bên ngoài của bất kỳ phương pháp thử nghiệm nào để chạy hoặc gỡ lỗi toàn bộ lớp thử nghiệm có trong tệp hiện tại.

+0

Vì vậy, biểu tượng bên cạnh khai báo phương thức cho biết "(Tên Phương thức) Chạy" thực sự có nghĩa là "Chạy toàn bộ lớp"? Điều đó có vẻ rất gây hiểu lầm ... – Brandon

+0

Tôi đã không viết nó, vì vậy tôi không thể thực sự nói. Trình đơn ngữ cảnh nhấp chuột phải có hoạt động không? –

+1

Không, nó vẫn chạy tất cả, ngay cả khi tôi nhấp chuột phải và nói Run Unit Tests. – Brandon

0

Phiên bản hiện tại của Gallio bao gồm một đơn vị kiểm tra Á hậu với MbUnit (và NUnit) hỗ trợ được xây dựng trong.

Từ menu Resharper, bạn có tùy chọn chạy thử nghiệm Đơn vị đơn lẻ hoặc tất cả Kiểm tra trong giải pháp của bạn. Thế nào là mát mẻ, đó là bàn phím-phím tắt cho việc này là:

  • Alt + R, U, R - Chạy thử nghiệm từ bối cảnh hiện nay (nếu bạn đang ở một mức [Test], nó chạy một kiểm tra, nếu bạn là ở mức [TestFixture], nó chạy tất cả vào bộ ghép)
  • Alt + R, U, N - chạy tất cả các đơn vị xét nghiệm trong giải pháp của bạn

tôi rất khuyên bạn nên uninstall Gallio hiện tại của bạn và sau đó kiểm tra C: \ Program Files \ Jetbrains \ Resharper \ plugins \ bin và xóa các tập tin ở đó. Sau đó cài đặt Gallio afresh.

Khi bạn đã thực hiện việc này, bạn nên khởi động VS2008 và goto tại Resharper | Menu plugin để kiểm tra xem plugin Gallio có đang hoạt động hay không. Điều này sẽ cung cấp cho bạn hỗ trợ cho MbUnit.

3

Tôi hy vọng điều này sẽ hiển thị trong bài đăng của Chris.

Tôi đã có một tình huống tương tự xác nhận hành vi mà anh ta nhận thấy.

[TestMethod()] 
public void ArchiveAccountTest() 

[TestMethod()] 
public void ArchiveAccountTestRestore() 

Vì vậy, chạy phương thức đầu tiên sẽ thực hiện cả và chạy phương thức thứ hai sẽ không thực hiện. Đổi tên phương pháp thứ hai của tôi thành TestRestore và vấn đề đã biến mất.

Lưu ý: Tôi đang sử dụng Resharper 5.1 nên vẫn là vấn đề.

5

Tôi có thể xác nhận rằng đây là sự cố với ReSharper 5.1.

Để tạo lại thử nghiệm chạy A từ mã mẫu của tôi bên dưới (tất cả các kiểm tra sẽ thực thi); chạy thử AB (tất cả ngoại trừ A sẽ thực thi); v.v.

[TestMethod] 
public void A() 
{ 
    Console.WriteLine("A"); 
} 

[TestMethod] 
public void AB() 
{ 
    Console.WriteLine("AB"); 
} 

[TestMethod] 
public void ABC() 
{ 
    Console.WriteLine("ABC"); 
} 

[TestMethod] 
public void ABCD() 
{ 
    Console.WriteLine("ABCD"); 
} 

[TestMethod] 
public void ABCDE() 
{ 
    Console.WriteLine("ABCDE"); 
} 

Tôi đã mất nhiều tuổi để làm việc này. Tôi đã có trình sửa lỗi từ xa được gắn với một máy chủ phát triển, và nó đã phá vỡ một chút thường xuyên hơn tôi mong đợi nó ...

Dường như đang thực hiện một StartsWith thay vì một Chứa như những người khác đã nói. Cách giải quyết là không có tên phương thức thử nghiệm bắt đầu bằng tên của tên phương thức thử nghiệm khác.

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