Nunitのテストプログラムで、メッセージの検証によって書き込み例外例外が発生していることを確認したいと思います。NunitでのArgumentExceptionとそのメッセージの確認C#
[Test]
public void ArgumentsWorkbookNameException()
{
const string workbookName = "Tester.xls";
var args = new[] { workbookName, "Sheet1", "Source3.csv", "Sheet2", "Source4.csv" };
Assert.Throws(typeof(ArgumentException), delegate { var appargs = new ApplicationArguments(args); }, "Invalid ending parameter of the workbook. Please use .xlsx");
}
これをテストした後、メインプログラムでメッセージを修正したときにこれが機能しなくなりました。
int wbLength = args[0].Length;
// Telling the user to type in the correct workbook name file.
if (args[0].Substring(wbLength-5,5)!=".xlsx")
{
throw new ArgumentException(
"Invalid ending parameter of the workbook. Please use .xlsx random random");
}
メッセージを変更したかどうかにかかわらず、単体テストは引き続き通過しました。
どうすればよいですか?または、C#にそのようなことはありません。私の同僚は、RubyやRSPECのようなオプションがあると言いましたが、C#では100%確実ではありません。
が、メッセージをチェックし、検証する価値はありません。
– Riga@リガ:もしあなたがしたいことができます - しかし、私はそれが私の時間の価値があるとは思わない。私は恐怖が退屈に変わるまでテストを重ねるのが好きです。 *正確な*例外メッセージをテストし、その例外を非常にわずかに有益なものにしたいときは、いつでもテストを変更することに非常に飽きるでしょう。私はそれが有用であるとは思えませんが、 。 –
代わりに、定数を共通の場所またはクラスに格納し、実動コードとテストコードの両方を同じ場所に設定することもできます。メッセージを変更する必要がある場合は、その1つの場所でメッセージを変更します。 – neverendingqs