Ссылка на объект не установлена ​​на экземпляр объекта при попытке выполнить тесты xUnit - PullRequest
0 голосов
/ 14 июля 2020

У меня есть класс, в котором я реализую таймер. Я хочу провести тесты xUnit для этого класса. Когда я пытаюсь запустить тесты, у меня появляется следующая ошибка:

System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

Что я делаю в конструктор не должен исправлять указанную ошибку c? Почему нет? Может кто-нибудь объяснить мне, почему я получил эту ошибку?

GuessingGameTimerTests.cs

private readonly GuessingGameTimer t;

        public GuessingGameTimerTests(GuessingGameTimer t)
        {
            this.t = t;
        }

        [Fact]
        public void StartTimerTest()
        {
            t.SetTimer(30000);
            bool expected = t.IsEnabled();
            Assert.True(expected);
        }
....

GuessingGameTimer.cs

public class GuessingGameTimer 
    {
        public event EventHandler OnNumberChanged;
        private System.Timers.Timer NumberGeneratorTimer;
        private int replacetime; // Time in seconds
        private int reSetValue; // Time in seconds

        //constractor starts the timer
        public GuessingGameTimer(int replacetime)
        {
            this.replacetime = replacetime;
            reSetValue = replacetime;
            SetTimer(replacetime);
        }
        public void SetTimer(int replacetime)
        {
            NumberGeneratorTimer = new System.Timers.Timer(replacetime);
            NumberGeneratorTimer.Elapsed += OnTick;
            NumberGeneratorTimer.AutoReset = true;
            NumberGeneratorTimer.Enabled = true;
            this.replacetime = getSeconds();
            reSetValue = getSeconds();
        }
        public void ResetTimer()
        {
            NumberGeneratorTimer.AutoReset = true;
            NumberGeneratorTimer.Enabled = true;
            replacetime = reSetValue;
        }

        public void StopTimer()
        {
            NumberGeneratorTimer.Enabled = false;
        }

        public int getSeconds()
        {
            return replacetime;
        }

        public Boolean IsEnabled()
        {
            return NumberGeneratorTimer.Enabled;
        }

1 Ответ

0 голосов
/ 14 июля 2020
    public GuessingGameTimerTests()
    {
        this.t = new GuessingGameTimer(3000);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...