调用私有静态void方法

时间:2019-06-04 09:10:11

标签: java reflection junit

我在类private static void中有一个convertToIp方法,即EllaDtoConverter,该方法具有私有构造函数。如果我尝试创建该类的实例,它将引发异常。提供了代码,

public final class EllaDtoConverter {

    private EllaDtoConverter() {
        throw new PrivateConstructorException();
    }

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

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

    // ..... some code 
}

我可以创建IrisBoEllaRequestDto的实例并在方法内部传递。我是否可以选择从另一个类之外调用convertToIp方法(即使使用反射)?

2 个答案:

答案 0 :(得分:0)

junit标签开始,我假设您想知道是否可以测试该方法。

我建议您this article,它基本上是说您不应该自己测试私有方法(静态还是非无关紧要)。

主要思想是,单元测试应测试模块所暴露的合同,以确保任何致电您的人都能从您的期望中得到期望,并且私有方法不属于合同的一部分。

答案 1 :(得分:0)

就像@ bracco23之前写的那样,您应该阅读有关测试私有方法的文章。 但是,如果您已经决定要这样做(排除了测试它们带来的所有负面影响),则有一个特殊的框架称为 PowerMockito 。 PowerMockito允许我们测试私有或静态方法。