MSTest Assert.AreEqual 因字符串数组而失败
MSTest Assert.AreEqual fails with string array
我正在进行一些单元测试,但不确定为什么这个特定测试失败了。
测试是为了断言自定义视图引擎在正确的位置查找视图。
在我的自定义视图引擎中是这样的:
AreaMasterLocationFormats = new[]
{
"~/Areas/{2}/App/{1}/Views/{0}.cshtml",
"~/Areas/{2}/App/Shared/Views/{0}.cshtml"
};
在我的测试中是这样的:
string[] expected = new[]
{
"~/Areas/{2}/App/{1}/Views/{0}.cshtml",
"~/Areas/{2}/App/Shared/Views/{0}.cshtml"
};
CustomRazorViewEngine engine = new CustomRazorViewEngine();
Assert.AreEqual(expected, engine.AreaMasterLocationFormats);
测试失败并显示消息:
Message: Assert.AreEqual failed. Expected:<System.String[]>. Actual:<System.String[]>.
(s/o 的引用格式不喜欢其中的第二个 lt...)
我不确定为什么,因为当我调试测试时一切都很好。
您需要使用 CollectionAssert
来代替:
CollectionAssert.AreEqual(expected, engine.AreaMasterLocationFormats);
见MSDN
我正在进行一些单元测试,但不确定为什么这个特定测试失败了。
测试是为了断言自定义视图引擎在正确的位置查找视图。
在我的自定义视图引擎中是这样的:
AreaMasterLocationFormats = new[]
{
"~/Areas/{2}/App/{1}/Views/{0}.cshtml",
"~/Areas/{2}/App/Shared/Views/{0}.cshtml"
};
在我的测试中是这样的:
string[] expected = new[]
{
"~/Areas/{2}/App/{1}/Views/{0}.cshtml",
"~/Areas/{2}/App/Shared/Views/{0}.cshtml"
};
CustomRazorViewEngine engine = new CustomRazorViewEngine();
Assert.AreEqual(expected, engine.AreaMasterLocationFormats);
测试失败并显示消息:
Message: Assert.AreEqual failed. Expected:<System.String[]>. Actual:<System.String[]>.
(s/o 的引用格式不喜欢其中的第二个 lt...)
我不确定为什么,因为当我调试测试时一切都很好。
您需要使用 CollectionAssert
来代替:
CollectionAssert.AreEqual(expected, engine.AreaMasterLocationFormats);
见MSDN