当方法 returns 为空时如何在 J-Unit 中进行测试?
How to test in J-Unit when a method returns null?
它们是我的方法,我正在测试它们:当我不给 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));
}
它们是我的方法,我正在测试它们:当我不给 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));
}