首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerMock in JUnit

PowerMock in JUnit
EN

Stack Overflow用户
提问于 2016-05-17 09:37:57
回答 1查看 333关注 0票数 2

请您帮助我为该代码定义PowerMock:

代码语言:javascript
复制
    String role = "ROLE_WARP_PUBLISH_PRIVATE";

    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();

    for (GrantedAuthority auth : authorities)
    {
        if(auth.getAuthority().equals(role))
        {
            if (publishCheckbox == true)
            {
                getScenarioService().makePublic(scenarioVersionId);
            }
        }

    }

因此,我知道我必须如何模拟getContext(),但在调用该方法时,我不能返回某些内容,因此,我完全无法模拟这几行代码。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-17 11:46:08

我的建议是:忘记了使用PowerMock的

如果您必须模拟静态方法,那么围绕它构建您自己的小包装类。然后,为了进行测试,您的包装程序可以返回您的控件;以及用于生产使用;您的包装器只调用静态方法。

PowerMock看起来是许多问题的解决方案;但它迟早会导致出现更多的问题。

认真地说:如果您的设计只能用PowerMock进行测试,这通常是一个明确的指示,说明您的设计是坏的。因此:专注于在测试中对代码进行重新加工;而不是把时间花在一个弊大于利的工具上,比如PowerMock。

我花了无数个小时来解决PowerMock问题,而不是开始编写“更好地测试”生产代码.我已经编写了数百或数千个测试,而不再需要PowerMock。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37272445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档