如何模拟常量类

0x6upsns  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(480)
Constants {
    public static final PATH = "/contentFiles";

    // Other constants ...
}

我该如何嘲笑 PATH 我的常量类中的字段?
我想模拟path变量,将其设置为“/test/contentfiles”行。
我希望我的测试类从测试文件夹而不是生产“/contentfiles”文件夹中获取文件。

a6b3iqyw

a6b3iqyw1#

如果常量类不是静态的,并且可以向类中添加一个方法,那么可以添加一个返回常量值的非静态方法,并模拟该方法以返回测试所需的值。
如果常量类是静态的或不支持非静态方法,则可能必须将其 Package 在一个类中,例如 ConstantProvider 在那里你可以得到常量的getter。然后可以为constantprovider插入一个mock,并根据需要存根getter。
第三种方法是在被测类中使用受保护/包保护的非静态全局字段,并直接设置这些值。如果全局字段被初始化为被测试方法之外的常量值,并且测试类在同一个包中,那么这种方法就可以工作。

相关问题