java - 当方法返回 null 时如何在 J-Unit 中进行测试?

标签 java jpa junit mockito converters

它们是我的方法,我正在测试它们:当我不给 null 作为参数时很好,但当我给我的参数为 null 时我无法测试?我无法理解这其中的逻辑。

这就是我的转换器方法:

 @Override
    public Integer convertToDatabaseColumn(WorkerId id) {
        if (Assert.isNull(id)) {
            return null;
        }
        return id.getValue();
    }

    @Override
    public WorkerId convertToEntityAttribute(Integer s) {
        if (Assert.isNull(s)) {
            return null;
        }
        return new WorkerId(s);
    }

这就是我的测试方法:

@Test
public void testConvertToDatabaseColumn() {
    WorkerId workerId = new WorkerId(1);
    Integer result = workerIdConverter.convertToDatabaseColumn(workerId);
    assertThat(result).isEqualTo(workerId.getValue());
}

@Test
public void testIfIdNull() {
    WorkerId workerId = null;
    Integer result = workerIdConverter.convertToDatabaseColumn(workerId);
    assertThat(result).isEqualTo(workerIdConverter.convertToDatabaseColumn(null));
}

最佳答案

您不需要也不应该调用两次测试方法。
这就足够了:

@Test
public void testIfIdNull() {
    WorkerId workerId = null;
    Integer result = workerIdConverter.convertToDatabaseColumn(workerId);
    assertThat(result).isEqualTo(null);
}

或者更简单地没有匹配器(这在这里没有帮助):

@Test
public void testIfIdNull() {
    WorkerId workerId = null;
    Integer result = workerIdConverter.convertToDatabaseColumn(workerId);
    Assert.assertNull(result);
}

由于断言和测试方法都很简洁,您甚至可以将所有内容写在一行中,而不会降低可读性:

@Test
public void testIfIdNull() {
    Assert.assertNull(workerIdConverter.convertToDatabaseColumn(null));
}

关于java - 当方法返回 null 时如何在 J-Unit 中进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49514479/

相关文章:

java - Arrays.sort(比较器)- Java 6 与 Java 7

java - 如何设置数组中的一个数据变量

java - 使用 CrudRepository 保存带有外键的实体对象

jpa - Glassfish 中的 LAZY 关系实例化问题

junit - PowerMock测试-设置类的静态字段

java - 解析管道分隔的字符串

java - 控制对通信层的访问

java - JPA QueryException - 必须提供引用类

unit-testing - 如何编写单元测试用例来为 ListenableFuture 添加回调

java - JUnit - 模拟服务嵌套映射器