我正在尝试编写一个单元测试来比较实际结果和预期结果,我测试的类给了我一个IReadOnlyCollection,我的预期结果是List。
我在How to compare Lists in Unit Testing阅读了有关使用CollectionAssert比较列表的答案,但是当我尝试这样做时,我得到编译器错误“无法从'System.Collections.Generic.IReadOnlyCollection'转换为'System。 Collections.ICollection'“
这是我的测试方法:
[TestMethod]
public void EveningMotion()
{
IDateTimeProvider dateTimeProvider = new MockDateTimeProvider(new DateTime(2018, 1, 1, 20, 0, 0));
ILightHardwareInterface frontyardLights = new MockLightHardwareInterface();
MockLightHardwareInterface backyardLights = new MockLightHardwareInterface();
LightController controller = new LightController(dateTimeProvider, frontyardLights, backyardLights);
controller.ActuateLights(true);
IReadOnlyCollection<bool> actualResult = backyardLights.GetRecording();
List<bool> expectedResult = new List<bool>
{
true
};
CollectionAssert.AreEqual(expectedResult, actualResult);
}
该怎么办?我希望保持预期和实际的结果比较,而不是逐个元素地迭代,如果可能的话。
答案 0 :(得分:1)
您可以将CollectionAssert用于集合。
CollectionAssert.AreEqual(expectedResult, actualResult);