Jam*_*ney 4 .net c# nunit unit-testing
我有一个类,现在应该总是在它有效之前填充某个成员.为了强制执行此操作,该类没有默认构造函数,而是具有一个构造函数,该构造函数接受该必需成员的值.设置类似于以下内容:
public class MyClass
{
public string Owner { get; protected set; }
public MyClass(string owner)
{
this.Owner = owner;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想写一个测试来确保实际上没有默认的构造函数,所以如果将来添加一个,我们会被提醒没有一个的原因,并被迫考虑这样做的影响.虽然,显然尝试在测试中调用默认构造函数不会失败,但它不会编译.
有没有一种很好的方法可以在不修改原始类的情况下完成这种测试?如果没有,我想我可以实现一个抛出异常的默认构造函数.我唯一的犹豫是调用默认构造函数现在变成可编译代码,然后我们必须依赖其他测试来确保这些代码不会被编写.
思考?
wom*_*omp 10
您可以调用Activator.CreateInstance(typeof(MyClass))以尝试运行默认构造函数,并断言MissingMethodException抛出a.
[Test]
[ExpectedException(typeof(MissingMethodException))
public void ShouldBeNoDefaultConstructorForMyClass()
{
Activator.CreateInstance(typeof(MyClass));
}
Run Code Online (Sandbox Code Playgroud)
ConstructorInfo ci = typeof(MyClass).GetConstructor(Type.EmptyTypes);
Assert.IsNull(ci);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |