gpt4 book ai didi

c# - 如何在测试用例中防止 'over-testing'? (C#/n单位)

转载 作者:太空狗 更新时间:2023-10-29 20:03:51 26 4
gpt4 key购买 nike

我目前正在处理一些测试用例,我经常发现在每个用例中我都会得到多个断言。例如(为简洁起见过度简化和删除评论):

[Test]
public void TestNamePropertyCorrectlySetOnInstantiation()
{
MyClass myInstance = new MyClass("Test name");
Assert.AreEqual("Test Name", myInstance.Name);
}

这在原则上看起来是可以接受的,但是测试的重点是验证当使用给定名称实例化类时,Name 属性设置正确,但如果在实例化时出现任何错误,它甚至会失败获取断言。

我是这样重构的:

[Test]
public void TestNamePropertyCorrectlySetOnInstantiation()
{
MyClass myInstance;
string namePropertyValue;

Assert.DoesNotThrow(() => myInstance = new MyClass("Test name"));
Assert.DoesNotThrow(() => namePropertyValue = myInstance.Name);
Assert.AreEqual("Test Name", namePropertyValue);
}

当然,现在我实际上在这里测试了三件事;在这个测试中,我没有兴趣测试 MyClass 的实例是否被成功实例化,或者 Name 属性是否被成功读取,这些在另一个情况下测试。但是,如果前两个断言失败,我什至无法进行测试,我该如何在不先断言其他两个断言的情况下测试最后一个断言?

最佳答案

只需进行其他测试,检查如果您以无效方式初始化异常 是否抛出异常。在这一点上,第一种形式很好,IMO。

就我个人而言,我会避免陷入“每次测试一个断言”的教条。尝试通过代码测试一条逻辑路径,测试粒度要尽可能细。

关于c# - 如何在测试用例中防止 'over-testing'? (C#/n单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3316851/

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