作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我使用 Guava 的 Preconditions验证我的方法的输入,例如:
class TestedClass {
public double sqrt(double value) {
Preconditions.checkArgument(value >= 0.0, "negative value: %s", value);
}
}
我想知道是否应该对先决条件进行单元测试?我是否应该进行测试:
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void shouldFailWhenValueIsNegative() {
exception.thown(IllegalArgumentException.class);
exception.expectMessage("negative value: -1");
new TestedClass().sqrt(-1);
}
最佳答案
我的意见是,是的,您通常应该进行测试,以验证您的方法的行为是否符合其契约(Contract)规定的行为(包括先决条件)。如果您说您的方法在给定参数负值时抛出特定异常,请进行测试以确保这是真的。
对于像 NullPointerException
这样非常常见的事情,guava-teSTLib
有 NullPointerTester
,我们用它来测试 NPE
为未使用 @Nullable
注释的参数抛出。
关于java - 方法前提条件是否应该进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27857794/
我是一名优秀的程序员,十分优秀!