java - 方法前提条件是否应该进行单元测试?

标签 java unit-testing junit guava

我使用 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-teSTLibNullPointerTester,我们用它来测试 NPE 为未使用 @Nullable 注释的参数抛出。

关于java - 方法前提条件是否应该进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27857794/

相关文章:

java - Java 接口(interface)中的注解

java - 在 Java 中从给定的 XML 创建 OpenSAML 断言

java - TreeMap 绞杀工作

swift - 如何在Swift中编写可测试的代码

java - easymock 如何模拟/设置公共(public)最终变量

java - Jenkins 上的随机构建失败

unit-testing - JUnit 理论 : Why can't I use Lists (instead of arrays) as DataPoints?

android - 使用 Kotlin 在 Android 中的测试中声明 @BeforeClass 的正确方法是什么

java - 如何在圆圈中导航

Java 通用类型 : difference between List <? extends Number> 和 List <T extends Number>