使用org.springframework.test.util.ReflectionTestUtils测试方法

时间:2019-06-27 15:35:18

标签: java reflection junit

我有一个要测试的类方法

public class EllaDtoConverter {


    private static void convertToIp( final IrisBo irisBo, EllaRequestDto request ) {

        if( nonNull( irisBo.getDevice() ) ) {
            request.setIp( irisBo.getDevice().getIpAddress() );
        }
    }
}

已提供我的考试

@Test
public void testConvertToIp() {

    assertNotNull( validIrisBo.getDevice() );
    assertNotNull( validIrisBo.getDevice().getIpAddress() );

    EllaRequestDto ellaRequestDto = new EllaRequestDto();

    ReflectionTestUtils.invokeMethod( ellaRequestDto, "setIp", validIrisBo.getDevice().getIpAddress() );
}

像这样保留它还是可以,或者我有更好的选择进行测试?

1 个答案:

答案 0 :(得分:1)

如果为private方法编写一个单独的测试会增加代码的置信度,而不是不应使用private方法。 private方法是实现细节,应通过类的接口进行测试。

如果您不想提取此private方法以使其可见,例如作为一个单独的类,您可以使用默认的可见性修饰符至少避免Java反射:

public class EllaDtoConverter {
    static void convertToIp( final IrisBo irisBo, EllaRequestDto request ) {
        ...
    }
}