0
Assert.AreEqual(expected, actual, "The value returned for {0}'s Foo method should be 'Bar'.",
            typeof(Calculator));

Assert.AreEqual(expected, actual, "The value returned for {0}'s Foo method should be 'Bar'.",
            typeof(Calculator).Name);

これらの行は両方とも次をスローします。

テスト メソッド MyTesting.FooTest が例外をスローしました: System.FormatException: 入力文字列が正しい形式ではありませんでした。


System.Text.StringBuilder.AppendFormat(IFormatProvider プロバイダー、文字列形式、Object[] 引数)
System.String.Format(IFormatProvider プロバイダー、文字列形式、Object[] 引数)
C:\TFS\Scratchpad\MyLibrary の MyTesting.FooTest() \Unit Testing\FooTest.cs: 195 行目

奇妙なことに、単体テストが失敗した場合にのみ例外が発生し、合格してもこの例外は発生しません。ただし、例外は期待していません。代わりに、単体テスト自体が例外をスローしたためではなく、アサーションのために失敗したはずです。

4

2 に答える 2

0

フォーマットされた文字列を使用しないようにして、それでも失敗するかどうかを確認してください。今日、構造体に対してアサーションを実行しようとして同じ問題が発生しました。これにより、アサーションがフォーマット例外をスローしなくなりました。フォーマットされた文字列に問題があるようです。(私はmsテストを使用しています)

Assert.AreEqual(expected, actual,"The value returned for " + typeof (Calculator) + "'s Foo method should be 'Bar'.");
Assert.AreEqual(expected, actual, "The value returned for " + typeof(Calculator) + "'s Foo method should be 'Bar'.");

このような文字列を作成するのは好きではありませんが、テストを正しく実行するための唯一の方法でした。

于 2013-02-19T18:23:55.007 に答える