如何在 Mockito 中模拟全局变量
Posted
技术标签:
【中文标题】如何在 Mockito 中模拟全局变量【英文标题】:how to mock global variable in Mockito 【发布时间】:2016-04-26 11:22:49 【问题描述】:我有一个全局变量global
。
我的方法有一行:
global.getListOfObjects()
我正在尝试编写单元测试并在上述行中不断获得 NPE。 如何模拟全局变量?
我正在使用 Mockito 和 PowerMock。
【问题讨论】:
全局变量?你能说得更具体点吗? 项目中任何文件都可以使用的对象。 你有那个对象的代码吗?和测试?因为没有人知道对象是 Singleton,还是只是静态方法,还是别的什么。 你尝试过什么但失败了?为什么在您的场景中模拟global
失败了?你得到哪个错误?
【参考方案1】:
使用必须有与下面相同类的mock对象
@InjectMock
ABC类 abc;
现在您可以在需要该值的测试用例中将全局变量设置为 abc.global = value。
【讨论】:
【参考方案2】:如果我正确理解您的问题,这些是您可以做的事情:
在源类中使用该属性的 setter 方法。
yourSourceClass.setGlobal(somethingYouNeed);
如果这是一个公共成员,您可以从您的测试类中分配该公共成员值。喜欢:
yourSourceClass.global = <somethingYouNeed>;
谢谢。
【讨论】:
以上是关于如何在 Mockito 中模拟全局变量的主要内容,如果未能解决你的问题,请参考以下文章
如何将许多变量和函数从全局环境导出到 foreach 循环?