加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 单元测试传递给静态方法的值

发布时间:2020-12-15 08:26:26 所属栏目:Java 来源:网络整理
导读:示例代码: class MyClass { public void myMethod(Request request) { Item item = getItem(); ItemUtilHelper.setCertainProperties(newProperty,item); differentClass.staticMethod(item); }} ItemUtilHelper已经有一个单元测试类来验证项目是否正确更新
示例代码:

class MyClass {
    public void myMethod(Request request) {
        Item item = getItem();
        ItemUtilHelper.setCertainProperties(newProperty,item);
        differentClass.staticMethod(item);
    }
}

ItemUtilHelper已经有一个单元测试类来验证项目是否正确更新.

我如何进行单元测试,使用更新的项参数调用differentClass.staticMethod?

解决方法

首先让我说静态方法本身就是代码气味. Mi?ko Hevery summed up it quite nicely by saying:

The basic issue with static methods is they are procedural code. I have no idea how to unit-test procedural code. Unit-testing assumes that I can instantiate a piece of my application in isolation.

如果您只想使用Mockito,则您的问题无法解决:

What are the limitations of Mockito

Mockito 2.x specific limitations

  • Cannot mock static methods

(见Mockito FAQ)

您可以使用PowerMock来实现目标.但要注意:PowerMock在字节码级别上运行.这意味着

>你可能没有测试你在生产中使用的完全相同的字节码(比如你好Heisenbugs)和
>这可以与其他工具拧紧,例如JaCoCo

如果您仍想继续,那么您正在寻找的是间谍.您可以在PowerMock’s wiki找到一个教程.虽然没有直接相关,但this question的答案提供了一些关于如何创建类的间谍的其他示例.整个例子可以在Automation Rhapsody找到.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读