- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在单元测试中使用多个断言是一种不好的做法吗?这有关系吗?
最佳答案
有时,每个测试用例只有一个 assert
,但我认为更多时候我有多个 assert
语句。
我见过 @Arkain 逃避的情况,其中一段非常大的代码有一个单元测试套件,只有几个测试用例,并且它们都被标记为 testCase1
,testCase2
等,每个测试用例有数百个断言。更好的是,每个条件通常都取决于先前执行的副作用。每当构建失败时,总是在这样的单元测试中,需要相当长的时间才能确定问题出在哪里。
但另一个极端是您的问题所暗示的:针对每种可能的条件都有一个单独的测试用例。根据您正在测试的内容,这可能是有意义的,但通常每个测试用例都有多个 assert
。
例如,如果您编写了java.lang.Integer
,您可能会遇到如下情况:
public void testValueOf() {
assertEquals(1, Integer.valueOf("1").intValue());
assertEquals(0, Integer.valueOf("0").intValue());
assertEquals(-1, Integer.valueOf("-1").intValue());
assertEquals(Integer.MAX_VALUE, Integer.valueOf("2147483647").intValue());
assertEquals(Integer.MIN_VALUE, Integer.valueOf("-2147483648").intValue());
....
}
public void testValueOfRange() {
assertNumberFormatException("2147483648");
assertNumberFormatException("-2147483649");
...
}
public void testValueOfNotNumbers() {
assertNumberFormatException("");
assertNumberFormatException("notanumber");
...
}
private void assertNumberFormatException(String numstr) {
try {
int number = Integer.valueOf(numstr).intValue();
fail("Expected NumberFormatException for string \"" + numstr +
"\" but instead got the number " + number);
} catch(NumberFormatException e) {
// expected exception
}
}
我可以立即想到一些简单的规则,以确定在测试用例中放置多少个断言:
断言
。断言
组合在一起 - 不必要时无需多个单元测试用例的开销。assert
语句。关于unit-testing - 在单元测试中使用多个断言是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/762512/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!