- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在处理一些测试用例,我经常发现在每个用例中我都会得到多个断言。例如(为简洁起见过度简化和删除评论):
[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/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!