相关疑难解决方法(0)

Mockito匹配器如何工作?

争论的Mockito匹配器(如any,argThat,eq,same,和ArgumentCaptor.capture())表现非常不同,从Hamcrest匹配器.

  • Mockito匹配器经常导致InvalidUseOfMatchersException,即使在使用任何匹配器后执行很长时间的代码中也是如此.

  • Mockito匹配器受到奇怪的规则的影响,例如,如果给定方法中的一个参数使用匹配器,则只需要对所有参数使用Mockito匹配器.

  • 当覆盖Answers或使用(Integer) any()等时,Mockito匹配器可能会导致NullPointerException .

  • 使用Mockito匹配器以某种方式重构代码可能会产生异常和意外行为,并且可能完全失败.

为什么Mockito匹配器是这样设计的,它们是如何实现的?

java mocking mockito

112
推荐指数
2
解决办法
11万
查看次数

当我们无法将模拟对象传递给类的实例时,如何使用Mockito

假设我有一个这样的类:

public class MyClass {

    Dao dao;

    public String myMethod(Dao d) {

        dao = d;

        String result = dao.query();

        return result;
    } 
}
Run Code Online (Sandbox Code Playgroud)

我想用mockito测试它.所以我创建了一个模拟对象,并以这种方式调用方法进行测试:

Dao mock = Mockito.mock(Dao.class);

Mockito.when(mock.myMethod()).thenReturn("ok");

new MyClass().myMethod(mock);
Run Code Online (Sandbox Code Playgroud)

但是,假设我有一个这样的类:

public class MyClass {

    Dao dao = new Dao();

    public String myMethod() {

        String result = dao.query();

        return result;
    } 
}
Run Code Online (Sandbox Code Playgroud)

现在我不能把我的模拟作为一个论点,所以我将如何测试我的方法?有人可以举个例子吗?

java mockito

6
推荐指数
2
解决办法
8059
查看次数

标签 统计

java ×2

mockito ×2

mocking ×1