我有一个类,它现在应该总是有一个特定的成员填充之前,它是有效的。为了执行此操作,类没有默认构造函数,而是有一个构造函数接受该必需成员的值。设置与此类似如下:在NUnit中测试不可编译的代码
public class MyClass
{
public string Owner { get; protected set; }
public MyClass(string owner)
{
this.Owner = owner;
}
}
现在我想编写一个测试,以确保有其实没有默认构造函数,因此,如果一个在未来被添加,提醒我们的没有理由背后的原因,并被迫考虑这样做的影响。尽管显然试图在测试中调用默认构造函数不会失败,但它不会编译。
有没有一种很好的方法来完成这种测试而无需修改我的原始类?如果没有,我想我可以实现一个引发异常的默认构造函数。我唯一犹豫的是现在调用默认构造函数变成可编译代码,然后我们必须依赖其他测试来确保这些代码不会被写入。
想法?
无论你想出什么解决方案,我都会建议记录类中缺少默认构造函数的重要性,以便您不依赖于未来可能运行或未运行的测试。当然,下一个开发人员可能会忽略其他级别的评论:-) – 2010-02-18 19:53:52
应该在构建服务器上运行测试,以便如果失败,构建将会中断。依靠开发人员来运行测试总是一个坏主意 - 如果没有持续集成,单元测试将无法正常工作。 – womp 2010-02-18 20:26:27
@womp:同意但运行在构建服务器上,或者不能单独测试仍然可以启用/禁用,这是我的观点。依靠项目其他部分的测试将继续进行下去并不无道理,但也不能保证。至少在课堂上的意见,你正在尽一切努力让人们意识到。因为未来的开发人员不会知道与特定测试存在相关的“原因”,所以可能比单独测试更为重要。我想,涵盖所有基地是我的观点。 – 2010-02-18 20:53:17