NullReferenceException при использовании NUnit

Я пытаюсь настроить модульные тесты для приложения для карточной игры, но мой код выдает исключение NullReferenceException: ссылка на объект не установлена для экземпляра объекта. Насколько я могу судить, я не должен получать эту ошибку, но она есть.

Вот мой код:

<code>        [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 + "";
            }
</code>

Исключение выдается в строке aTable.setup, как будто aTable не был создан, хотя он явно был в [Setup], и я не могу понять, почему.

Я использую Visual C # 2010 Express v10.0.40219.1 SP1Rel с NUnit 2.6.0.12051.

Любая помощь будет оценена. Спасибо!

Ответы на вопрос(3)

Запустите NUnit, но не запускайте тесты. В visual studio убедитесь, что у вас открыт проект, содержащий ваши тесты nunit. Затем в визуальной студии нажмите Ctrl + Alt + P. Это выведет список процессов, к которым нужно присоединиться. Выберите процесс nunit-agent.exe. Если существует более одного процесса nunit-agent.exe, вы можете нажать Ctrl +, чтобы выбрать все из них. Возможно, вам придется проверитьShow processes in all sessions и / илиShow processes from all users чтобы получить файл nunit-agent.exe. На этом этапе вы сможете отладить свой тест.

Теперь вы можете установить точку останова при вызове конструктораCardTable, По мере продвижения по отладчику вы сможете определить ошибку ссылки на нулевой объект.

Альтернатива пошаговому коду - выбрать в меню.Debug->Exceptions... в появившемся диалоговом окне установите флажок рядом сCommon Language Runtime Exceptions, Это заставит отладчик останавливаться на любых исключениях, обработанных или необработанных, когда они будут выброшены. Это устраняет необходимость в точке останова, но если у вас есть генерируемые исключения, которые могут быть перехвачены, это может доставить больше хлопот, чем описанный выше метод точки останова.

У меня была такая же проблема, и я откатил версию фреймворка NUnit с 3.7.1 до 3.0.5, и теперь все работает без исключений. Может быть, вам стоит вернуться к одной из предыдущих версий фреймворка NUnit.

Похоже, что установка - это ваша проблема, и она не вызывается, когда вы этого хотите.

Я рекомендую сделать это:

CardTable aTable = new CardTable();

Таким образом, он никогда не будет нулевым.

ВАШ ОТВЕТ НА ВОПРОС