2017-05-09 5 views
-2

これは、負の値の後に表示されるエラーメッセージをチェックする方法ですか?正しい例外がスローされたかどうかを調べることができますが、もし私のメソッドが負の数を持つ例外をスローしないならば、単にWriteLineをError出力ストリームにスローします。C#でエラーメッセージを確認するには?

public List<int> MyMethod() 
{ 
    ... 
    try 
    { 
     //add elements to list 
    } 
    catch(Exception e) 
    { 
     Error.WriteLine("Element cannot be negative, but other elements are ok"); 
    } 
    ... 
} 

[TestMethod] 
public void TestWithNegatives() 
{ 
    try 
    { 
     List<int> list = MyMethod(); 
     //there is a negative int in list, so there'll be an error message 
    } 
    catch (Exception e) 
    { 
     //Can I check here the error message, if there isn't exception thrown in mymethod? 
    } 
} 
+0

あなたはユニットテストを試してみましたか? –

+0

"表示"とは何を意味しますか?あなたはGUI、コンソールアプリケーションを持っていますか? – tafia

+0

さまざまな状況で表示されるコンソールに一連の行を書き込むことは簡単で機能的な方法です。同様に、ブレークポイントを設定して、デバッグと一緒に要素を調べれば、コンソールのifステートメントをたくさん保存することができます。 – ToFo

答えて

0

すでに例外を処理しており、再スローされていないので、テストで再度処理することはできません。

しかし、あなたがメッセージをConsole.Errorに書かれていることを知っているので、カスタムStringWriterConsole.Errorをリダイレクトすることでこれを確認し、そのようにそれに書かれたものを確認することができます。

public void TestWithNegatives() 
{ 
    using (StringWriter sw = new StringWriter()) 
    { 
     Console.SetError(sw); 
     List<int> list = MyMethod(); 
     // Check output in "Error": 
     Assert.IsFalse(string.IsNullOrEmpty(sw.ToString())); 
    } 
} 
+0

ありがとう!それは私が必要なものです。 – programmo

関連する問題