Java 当一个方法返回null时,如何在J单元中进行测试?

Java 当一个方法返回null时,如何在J单元中进行测试?,java,jpa,junit,mockito,converter,Java,Jpa,Junit,Mockito,Converter,它们是我的方法,我正在测试它们:当我不将null作为参数时,这很好,但当我将我的参数作为null时,我无法测试?我无法理解它的逻辑 这就是我的转换方法: @Override public Integer convertToDatabaseColumn(WorkerId id) { if (Assert.isNull(id)) { return null; } return id.getValue(); }

它们是我的方法,我正在测试它们:当我不将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);
}
或者更简单地说,没有matcher(这在这里没有帮助):

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

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

为什么当您将null作为参数时不能进行测试?这是正确的还是我的逻辑正常还是愚蠢<代码>assertThat(result).isEqualTo(workerIdConverter.convertToDatabaseColumn(null))在1个测试用例中测试该方法2次。阅读大卫的答案
@Test
public void testIfIdNull() {
    Assert.assertNull(workerIdConverter.convertToDatabaseColumn(null));
}