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 provider, String format, Object[] args)
System.String.Format(IFormatProvider provider, String format, Object[] args)
MyTesting.FooTest() in C:\TFS\Scratchpad\MyLibrary \Unit Testing\FooTest.cs:第 195 行

奇怪的是,如果我的单元测试失败,我只会得到一个异常,当它通过时我没有得到这个异常。不过,我并不期望出现异常,而是由于断言而应该失败,而不是因为单元测试本身引发了异常。

4

2 回答 2

1

在相等测试之前进行测试以确保您的对象 Calculator 不为空。

在这种特殊情况下,这种错误将以字符串格式发生。

于 2011-10-12T03:14:59.470 回答
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 回答