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