比较单元测试中的两个数组,抛出AssertFailedException异常

本文关键字:数组 两个 抛出 异常 AssertFailedException 单元测试 比较 | 更新日期: 2023-09-27 18:10:41

我正在为准备好的代码编写单元测试,并且我正在接收一个意外的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];
        }
    }

调试测试,在本地变量窗口播放。Position和expectedPosition看起来很相似,但测试仍然失败。恐怕问题出在参考资料上。

比较单元测试中的两个数组,抛出AssertFailedException异常

您正在比较一个int[]的不同实例。Assert.AreEqual参照比较。试试CollectionAssert.AreEqual

CollectionAssert.AreEqual(expectedPosition, testPlayer.Position);

这将比较数组元素。

另外,您的Position属性闻起来像糟糕的设计。你真的需要每次获得一个值都创建一个新的数组吗?