NRE when using NUnit
本文关键字:NUnit using when NRE | 更新日期: 2023-09-27 18:33:20
>我正在尝试为纸牌游戏应用程序设置单元测试,但我的代码抛出 NullReferenceException:对象引用未设置为对象的实例。据我所知,我不应该收到此错误,但它就在那里。
这是我的代码:
[TestFixture]
public class Tests
{
CardTable aTable = null;
[SetUp]
public void setup()
{
aTable = new CardTable();
}
[Test]
public void setPlayerGold_setTo0_return0()
{
//arrange
//act
aTable.setPlayerGold(0);
//assert
Assert.AreEqual(0, aTable.playerGold);
}
}
public class CardTable
{
int playerGold;
public CardTable()
{
playerGold = 0;
}
public void setPlayerGold(int amount)
{
if (amount == 0)
{
playerGold = 0;
}
else
{
playerGold += amount;
}
goldLabel.Text = playerGold + "";
}
异常在 aTable.setup 行被抛出,就好像 aTable 没有实例化一样,即使它显然在 [Setup] 中,我也不知道为什么。当我删除"act"调用时,测试通过,因此 aTable 不能为空,否则测试也会在那里失败。
我正在运行Visual C# 2010 Express v10.0.40219.1 SP1Rel与NUnit 2.6.0.12051。
任何帮助将不胜感激。谢谢!
您可能
还希望更改Assert.AreEqual(0, aTable.playerGold);
中的值以使用 get 方法,而不是直接引用 objects 属性。
所以像
aTable.getPlayerGold()
我相信
它在goldLabel.Text 您没有在任何地方实例化表单,因此表单上的控件为 null。
作为一般规则,您可能不想在单元测试中测试标签是否设置为值,而是以某种方式模拟此对象或只是编写设置值的测试(但不是标签的文本已更新)。