我有一个单元测试问题,其中一类具有想要加载Spring应用程序CTX的静态变量。

这堂课不是从豆厂出来的,我无法改变这一事实。

static ApplicationContext applicationContext = ...;

这很好,但是很难 jmock, ,或者至少我不知道,直到我可以春季CTX想要启动。对于单位测试情况并不理想。

是否有任何人知道的工作?我可以选择将静态变量更改为我想要的任何东西。

谢谢。

有帮助吗?

解决方案

我自己解决了。

最终真的很简单。 Justed需要将我的静态包裹在课堂上,然后我可以嘲笑。

public class ApplicationContextHolder implements ApplicationContextHoldable {

    protected static ApplicationContext applicationContext = ...;

    @Override
    public ApplicationContext getApplicationContext() {
        return ApplicationContextHolder.applicationContext;
    }

}

其他提示

好的。具有讽刺意味的是,春天擅长的一件事是管理单身人士,因此不需要静态变量:)

您可以使用基于反射的Jmock API设置私有 /静态字段

    import static mockit.Deencapsulation.setField;
    //Test method
    public void testSample {
        setField(Sample.class,"isPrivate",true);
        setField(Sample.class,"isStatic",true);
    }

    private class Sample {
        private boolean isPrivate = false;
        private boolean isStatic = false;

    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top