2010-07-13 24 views
7

Nếu chúng ta làm mộtTrong MS C# Đơn vị kiểm tra, làm thế nào để khẳng định rằng một ArgumentException xảy ra?

throw new ArgumentException("Cannot do that"); 

Làm thế nào để bạn Khẳng định rằng ArgumentException này đã xảy ra với Testing Khung của Microsoft?

+0

thể Duplicate [C#: Làm thế nào để sử dụng Khẳng định (Đơn vị Kiểm tra) để xác minh rằng một ngoại lệ đã được ném?] (Http://stackoverflow.com/q/933613/299327). –

Trả lời

12

Bạn có thể trang trí kiểm tra đơn vị của bạn với các thuộc tính [ExpectedException]:

[ExpectedException(typeof(ArgumentException))] 
[TestMethod] 
public void Foo() 
{ 
    throw new ArgumentException("foo"); 
} 

Đừng hỏi mặc dù về khẳng định thông điệp ngoại lệ :-)

+0

Vì vậy, tại sao các xét nghiệm Đơn vị không nên thử nghiệm nhiều hơn một điều. Điều gì sẽ xảy ra nếu bạn đã thực hiện Try/Catch sau đó xử lý ngoại lệ bị bắt với một Assert? –

+1

Vâng, tất nhiên bạn có thể làm điều đó nhưng trong trường hợp này bạn sẽ viết, hãy để tôi đếm, thêm 7 dòng mã (có thể là một chút ít hơn nếu bạn đặt '{' trên cùng một dòng), và mọi dòng mã bạn viết là ẩn một lỗi tiềm năng và làm giảm khả năng đọc của mã, vậy tại sao làm nó khi bạn có thể tránh nó :-) –

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