尝试进行 xUnit 测试时,对象引用未设置为对象的实例
Object reference not set to an instance of an object when trying to xUnit tests
我有一个 class,我在其中实现了一个计时器。我想为那个 class 做 xUnit 测试。当我尝试 运行 测试时出现以下错误
System.NullReferenceException : Object reference not set to an instance of an object.
我在构造函数中所做的不应该修复特定错误?为什么不?有人可以向我解释为什么会出现该错误吗?
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;
}
public GuessingGameTimerTests()
{
this.t = new GuessingGameTimer(3000);
}
我有一个 class,我在其中实现了一个计时器。我想为那个 class 做 xUnit 测试。当我尝试 运行 测试时出现以下错误
System.NullReferenceException : Object reference not set to an instance of an object.
我在构造函数中所做的不应该修复特定错误?为什么不?有人可以向我解释为什么会出现该错误吗?
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;
}
public GuessingGameTimerTests()
{
this.t = new GuessingGameTimer(3000);
}