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 [] args)
System.String.Format(的IFormatProvider provider,String format,Object [] args)
MyTesting.FooTest()in C:\ TFS \ Scratchpad \ MyLibrary \ Unit Testing \ FooTest.cs:第195行
奇怪的是,如果我的单元测试失败,我只会得到一个异常,当它通过时我没有得到这个异常。我不期待一个例外,相反它应该因为断言而失败,而不是因为单元测试本身引发了异常。
答案 0 :(得分:1)
进行测试以确保在相等测试之前对象Calculator不为null。
在这种特殊情况下会以字符串格式发生此类错误。
答案 1 :(得分: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'.");
我不喜欢像这样构建字符串,但这是我能让我的测试正常运行的唯一方法。