如果两个锯齿状阵列相等,你如何进行单元测试?

时间:2012-11-02 01:37:13

标签: c# c#-4.0

我有一个手动提取日期的功能。

[TestMethod]
public void TestRemoveTwoDates()
{
    String test = "at 06/2/2012 to 12/10/2012";
    int[][] actual = String_Parser.RemoveTwoDates(test, "to");
    int[][] expected = new int[2][];
    expected[0] = new int[3] { 6, 2, 2012 };
    expected[1] = new int[3] { 12, 10, 2012 };

    CollectionAssert.AreEqual(expected, actual);
}

P.S。浏览SO,我意识到返回数组是不好的做法,因为它们是可变的。但我仍然想知道除了使用循环来断言数组中的每个元素之外我还能测试这个。

2 个答案:

答案 0 :(得分:4)

由于你不能使用使用引用而不是数组内容的Hashcode,所以要采用嵌套循环中的所有值进行迭代,逐个比较值(如stackoverflow.com/questions/2893297/iterate-multi-dimensional-array-with-nested-foreach-statement所示),使用在第一次不匹配时设置为false的布尔值,并在单元测试中断言此布尔值为 true

答案 1 :(得分:0)

查看http://fluentassertions.codeplex.com/documentation中的“收藏”部分,它可能会对您有所帮助