ユニットテスト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 アプリケーションを開くことがよくあります。ただし、このショートカットが参照するオブジェクトは変更または移動されており、ある日クリックするとエラー通知が表示されます。この問題の根本的な原因は何ですか?どのように修正しますか?この問題のさまざまな理由は次のとおりです: 対象のソフトウェアが元のフォルダから取り出されたか、破棄された。 マルウェアまたは破損したサードパーティ製アプリがデバイスに存在します。 お使いのコンピュータのシステム ファイルが破損しているか見つからない パスをブロックしている特定のアクティブなシステム保護ソリューショ