我对单元测试还比较陌生,实际上我们正试图在项目中使用它。有这样的财产。
public TimeSpan CountDown
{
get
{
return _countDown;
}
set
{
long fraction = value.Ticks % 10000000;
value -= TimeSpan.FromTicks(fraction);
if(fraction > 5000000)
value += TimeSpan.FromSeconds(1);
if(_countDown != value)
{
_countDown = value;
NotifyChanged("CountDown");
}
}
}
我的测试是这样的。
[TestMethod]
public void CountDownTest_GetSet_PropChangedShouldFire()
{
ManualRafflePresenter target = new ManualRafflePresenter();
bool fired = false;
string name = null;
target.PropertyChanged += new PropertyChangedEventHandler((o, a) =>
{
fired = true;
name = a.PropertyName;
});
TimeSpan expected = new TimeSpan(0, 1, 25);
TimeSpan actual;
target.CountDown = expected;
actual = target.CountDown;
Assert.AreEqual(expected, actual);
Assert.IsTrue(fired);
Assert.AreEqual("CountDown", name);
}
问题是如何在setter中测试代码?我要把它分解成一种方法吗?如果我这样做,它可能是私人的,因为没有其他人需要使用这个。但他们说不要测试私人方法。如果这是唯一的情况,就要上课吗?这段代码的两种用法会使一个类有价值吗?从设计的角度来看,这个代码有什么问题。什么是正确的?