zoukankan      html  css  js  c++  java
  • 使用Mockito时遇到的一些问题

    最近在使用Mockito时遇到了几个比较tricking的问题,在这里记录一下。

    1.如果方法的参数或者返回类型是泛型通配符相关的(如<?>,<? extends XXX>),不管你定义的对象类型是否正确匹配,用any(match)方法时都会编译出错。

    解决办法:修改方法的参数类型,去掉泛型通配符。我遇到的相关代码去掉通配符之后也是运行正常的,如果去掉后运行不正常,可能需要寻找其他解决办法,具体没有研究。

    2.mock对象的方法有多个参数,如果对第一个参数使用any()方法匹配,则后面的所有参数都需要使用any匹配,而不能使用真实对象作为参数。

    error info - test.java
    1
    2
    3
    4
    5
    6
    7
    
    This exception may occur if matchers are combined with raw values:
        //incorrect:
        someMethod(anyObject(), "raw String");
    When using matchers, all arguments have to be provided by matchers.
    For example:
        //correct:
        someMethod(anyObject(), eq("String by matcher"));
    

    3.在setUp方法里面进行方法mock,直接在IDE里面运行junit成功,但用ant运行则会报错,其实这是另外一个测试类里面verify方法使用错误,如下:

    code - test.java
    1
    2
    3
    4
    5
    
        //错误
        verify(packageBuildContext.getPackageBuilder());
    
        //正确
        verify(packageBuildContext).getPackageBuilder()
    

    很奇怪,在用ant跑单元测试的时候,这个测试类的错误不是在这个类的测试报告里体现,而是出现在另外一个类的测试报告里,而且直接在IDE里面运行junit不会报错。

  • 相关阅读:
    C#数组的使用
    CLR设计类型之接口
    CLR类型设计之泛型(二)
    CLR类型设计之泛型(一)
    CLR类型设计之属性
    CLR类型设计之参数传递
    CLR类型设计之方法与构造器
    将博客搬至CSDN
    Unity_与android交互
    CSS3制作hover下划线动画
  • 原文地址:https://www.cnblogs.com/kingzzm/p/3325392.html
Copyright © 2011-2022 走看看