2016-12-23 33 views
14

Tôi đang viết kiểm tra đơn vị cho ứng dụng lõi. Tôi đang cố gắng kiểm tra, rằng lớp học của tôi ném ngoại lệ. Nhưng ExpectedException thuộc tính ném ngoại lệ biên dịch:ExpectedException xunit .net lõi

Lỗi CS0246 Loại hoặc namespace tên 'ExpectedException' không thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một hội ?) EventMessagesBroker.Logic.UnitTests. .NETCoreApp, Version = v1.0

mã của tôi:

[Fact] 
[ExpectedException(typeof(MessageTypeParserException))] 
public void TestMethod1_Error_twoMathces() 
{ 
    var message = "some text"; 
    var parser = new MessageTypeParser(); 
    var type = parser.GetType(message); 
    Assert.Equal(MessageType.RaschetStavkiZaNalichnye, type); 
} 

vậy, liệu có bất kỳ cách chính xác để một chieve đó?

+3

Không sử dụng xUnit mà không đọc https://xunit.github.io/docs/comparisons.html –

Trả lời

20

Sử dụng Assert.Throws trên mã nơi ngoại lệ dự kiến:

[Fact] 
public void TestMethod1_Error_twoMathces() 
{ 
    var message = "some text"; 
    var parser = new MessageTypeParser(); 
    Assert.Throws<MessageTypeParserException>(() => parser.GetType(message)); 
} 
+0

yeap, tôi sử dụng cách này. Hãy suy nghĩ đây chỉ là giải pháp –

+1

Chỉ để ghi lại, xunit không hỗ trợ ExpectedException và hỗ trợ cách hiển thị trong câu trả lời. Như được mô tả chi tiết hơn ở đây: https://xunit.github.io/docs/comparisons.html Nếu bạn muốn thực hiện theo cú pháp Triple A để kiểm tra đơn vị thì bạn có thể gán phân tích cú pháp.GetType (tin nhắn) cho một Hành động và khẳng định rằng hành động của bạn ném một ngoại lệ. –

+0

Chúng ta cũng có thể sử dụng phương thức 'Record.Exception' và sau đó xác minh bằng phương thức' Assert.NotNull' và phương thức 'Assert.IsType <>'. Xem https://www.richard-banks.org/2015/07/stop-using-assertthrows-in-your-bdd.html – Brij

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