我正在为准备好的代码编写单元测试,并且我正在尝试运行其中一个测试时收到意外的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看起来相似,但测试仍然失败。我担心问题来自参考文献。
答案 0 :(得分:32)
您正在比较int[]
的不同实例。 Assert.AreEqual
通过引用进行比较。试试CollectionAssert.AreEqual
。
CollectionAssert.AreEqual(expectedPosition, testPlayer.Position);
这将比较数组元素。
此外,您的Position
财产闻起来很糟糕。每次获得值时,你真的必须创建新数组吗?