ユニットテストC#でスローされた例外を確認するにはどうすればよいですか?
単体テストで例外を検証する方法は2つあります。
- Assert.ThrowsExceptionの使用
- ExpectedException属性の使用。
例
例外をスローするStringAppendメソッドをテストする必要があると考えてみましょう。
using System; namespace DemoApplication { public class Program { static void Main(string[] args) { } public string StringAppend(string firstName, string lastName) { throw new Exception("Test Exception"); } } }
Assert.ThrowsExceptionの使用
using System; using DemoApplication; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace DemoUnitTest { [TestClass] public class DemoUnitTest { [TestMethod] public void DemoMethod() { Program program = new Program(); var ex = Assert.ThrowsException<Exception>(() => program.StringAppend("Michael","Jackson")); Assert.AreSame(ex.Message, "Test Exception"); } } }
たとえば、Assert.ThrowsExceptionを使用してStringAppendメソッドを呼び出しており、例外タイプとメッセージが検証されています。したがって、テストケースは合格します。
ExpectedException属性の使用
using System; using DemoApplication; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace DemoUnitTest { [TestClass] public class DemoUnitTest { [TestMethod] [ExpectedException(typeof(Exception), "Test Exception")] public void DemoMethod() { Program program = new Program(); program.StringAppend("Michael", "Jackson"); } } }
たとえば、ExpectedException属性を使用して、予期される例外のタイプを指定しています。 StringAppendメソッドは、[ExpectedException(typeof(Exception)、 "Test Exception")]で説明されているのと同じタイプの例外をスローするため、テストケースは合格します。
-
私のウェブサイトはハッキングされていますか? Web サイトがハッキングされているかどうかを確認する方法
「私のウェブサイトはハッキングされたのではないか? 」 それとも、何かおかしいことに気づいたからといって、ただ心配しているだけですか?いずれにせよ、パニックにならないでください。問題を理解しようとすることで、あなたはすでに先を行っています。 毎週、Google は 20,000 を超える Web サイトをブラックリストに登録し、50,000 の Web サイトにマルウェアのフラグを立てています。このことを考えると、セキュリティ アラートによって頭痛の種が半減したかもしれません。 ただし、まず、MalCare で WordPress サイトをスキャンして、Web サイトがハッキン
-
「このショートカットが参照するアイテムは変更されました」エラーを修正する方法
対応するショートカット アイコンを使用して、Windows アプリケーションを開くことがよくあります。ただし、このショートカットが参照するオブジェクトは変更または移動されており、ある日クリックするとエラー通知が表示されます。この問題の根本的な原因は何ですか?どのように修正しますか?この問題のさまざまな理由は次のとおりです: 対象のソフトウェアが元のフォルダから取り出されたか、破棄された。 マルウェアまたは破損したサードパーティ製アプリがデバイスに存在します。 お使いのコンピュータのシステム ファイルが破損しているか見つからない パスをブロックしている特定のアクティブなシステム保護ソリューショ