Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用NUnit时的NRE_C#_Nunit - Fatal编程技术网

C# 使用NUnit时的NRE

C# 使用NUnit时的NRE,c#,nunit,C#,Nunit,我试图为一个纸牌游戏应用程序设置单元测试,但我的代码抛出了一个NullReferenceException:对象引用未设置为对象的实例。据我所知,我不应该得到这个错误,但它是存在的 这是我的密码: [TestFixture] public class Tests { CardTable aTable = null; [SetUp] public void setup()

我试图为一个纸牌游戏应用程序设置单元测试,但我的代码抛出了一个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不能为null,否则测试也会失败

我正在使用NUnit 2.6.0.12051运行Visual C#2010 Express v10.0.40219.1 SP1Rel

任何帮助都将不胜感激。
谢谢

我相信它在goldLabel.Text中。您没有在任何地方实例化表单,因此表单上的控件为空


作为一般规则,您可能不想在单元测试中测试标签是否设置为值,而是以某种方式模拟此对象,或者只编写一个设置了值的测试(但不更新标签的文本)。

您可能还想更改
Assert.AreEqual(0,aTable.playerGold)中的值
使用get方法,而不是直接引用objects属性

大概是

aTable.getPlayerGold()

成功了!非常感谢你!对原始问题的评论和回答完全没有帮助。我总结了我的代码,实际上排除了问题的原因。当我能够编辑代码来显示问题时,问题已经过时了,看不见了。当我转载时,我在5分钟内得到了答案。