在单元测试中比较两个数组,抛出AssertFailedException

时间:2014-06-28 06:58:41

标签: c# unit-testing

我正在为准备好的代码编写单元测试,并且我正在尝试运行其中一个测试时收到意外的AssertFailedException。他是这样的:

[TestMethod]
    public void TestPositionGetter()
    {
        testPlayer.Position = new int[] { 1, 3 };
        int[] expectedPosition = testPlayer.Position;
        Assert.AreEqual(expectedPosition, testPlayer.Position);
    }

以下是我试图测试的Player类中的Position属性:

public int[] Position
    {
        get
        {
            return new int[] { this.PositionX, this.PositionY };
        }
        set
        {
            this.PositionX = value[0];
            this.PositionY = value[1];
        }
    }

调试测试,在局部变量窗口中,player.Position和expectedPosition看起来相似,但测试仍然失败。我担心问题来自参考文献。

1 个答案:

答案 0 :(得分:32)

您正在比较int[]的不同实例。 Assert.AreEqual通过引用进行比较。试试CollectionAssert.AreEqual

CollectionAssert.AreEqual(expectedPosition, testPlayer.Position);

这将比较数组元素。

此外,您的Position财产闻起来很糟糕。每次获得值时,你真的必须创建新数组吗?