2016-12-23 12 views
14

私はコアアプリケーションのユニットテストを書いています。私のクラスが例外をスローすることを確認しようとしています。しかしExpectedException属性は、コンパイルの例外がスローされます。ExpectedException xunit .netコア

エラーCS0246型または名前空間名「ExpectedExceptionが」が見つかりませんでした (あなたがusingディレクティブまたはアセンブリ参照 不足している?)EventMessagesBroker.Logic.UnitTestsを。 .NETCoreApp、バージョン= v1.0の

マイコード:そう

[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); 
} 

、任意の正しい方法はにありそれを信じる?例外は期待コードに

+3

はyeap、私はこの方法を使用するhttps://xunit.github.io/docs/comparisons.html –

答えて

20

使用Assert.Throws

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

を読まずxUnitフレームを使用しないでください。これは解決策だと思ってください –

+1

xunitはExpectedExceptionをサポートしておらず、答えに示されている方法をサポートしています。ここで詳しく説明します:https://xunit.github.io/docs/comparisons.html 単体テストのためのトリプルA構文に従ったければ、parser.GetType(メッセージ)をアクションに割り当てることができます。あなたのアクションが例外をスローすると主張します。 –

+0

'Record.Exception'メソッドを使用し、後で' Assert.NotNull'メソッドと 'Assert.IsType <>'メソッドを使って検証することもできます。 https://www.richard-banks.org/2015/07/stop-using-assertthrows-in-your-bdd.htmlを参照してください。 – Brij

関連する問題