如何使用 JMock 在 java 中模拟静态变量
我有一个单元测试问题,其中一个类有一个静态变量想要加载 Spring 应用程序 Ctx。
这个类不是来自 Bean Factory,我无法改变这个事实。
static ApplicationContext applicationContext = ...;
这工作正常,但是很难JMock,或者至少我不知道一种方法在我可以之前,Spring Ctx 想要启动。不适合单元测试情况。
有没有人知道的解决办法? 我可以选择将静态变量更改为我想要的任何内容。
谢谢。
I have a Unit testing problem where a class has a static variable which wants to load the Spring Application Ctx.
This class DOES NOT come out of the Bean Factory and I cannot change this fact.
static ApplicationContext applicationContext = ...;
This works fine, but is hard to JMock, or atleast I don't know a way and until I can the Spring Ctx wants to start up. Not ideal for a unit test situation.
Is there a work around that anyone knows?
I have the option to change the static variable to anything I wish..
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我自己解决了这个问题。
最后真的很简单。只是需要将我的静态包装在一个类中,然后我可以模拟它。
Solved this myself.
Was really simple in the end. Justed need to wrap my static in a class which I could then mock.
好的。讽刺的是,Spring 擅长的一件事是管理单例,所以不需要静态变量:)
Nice. The irony is that the one thing that Spring is good at is managing Singletons, so there shouldn't be a need for static variables :)
您可以使用基于反射的 JMock API 来设置私有/静态字段
You can use reflection based JMock APIs to set private / static fields