gpt4 book ai didi

c# - 在 NUnit 中测试不可编译的代码

转载 作者:太空狗 更新时间:2023-10-29 23:55:08 24 4
gpt4 key购买 nike

我有一个类,现在应该总是在它有效之前填充某个成员。为了强制执行此操作,该类没有默认构造函数,而是有一个构造函数接受所需成员的值。设置类似于以下:

public class MyClass
{
public string Owner { get; protected set; }

public MyClass(string owner)
{
this.Owner = owner;
}
}

现在我想写一个测试来确保实际上没有默认构造函数,这样如果将来添加了一个,我们就会被提醒没有背后的原因并被迫考虑影响这样做。虽然,显然尝试在测试中调用默认构造函数不仅会失败,而且不会编译。

有没有什么好方法可以在不修改我原来的类的情况下完成这种测试?如果没有,我想我可以实现一个抛出异常的默认构造函数。我唯一的犹豫是,调用默认构造函数现在变成了可编译代码,然后我们必须依赖其他测试来确保不会编写此类代码。

想法?

最佳答案

您可以调用 Activator.CreateInstance(typeof(MyClass))尝试运行默认构造函数,并断言抛出了 MissingMethodException

[Test]
[ExpectedException(typeof(MissingMethodException))
public void ShouldBeNoDefaultConstructorForMyClass()
{
Activator.CreateInstance(typeof(MyClass));
}

关于c# - 在 NUnit 中测试不可编译的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com