java - 我应该如何在抽象模拟类中填写 map ?

标签 java unit-testing mockito

我不知道如何在抽象类中填充 map (模拟)。我有这个架构:

抽象类有一个成员Map:

abstract class Parent{

    protected Map<Integer, Example> map;

    protected abstract void methodForChild();

    protected Object doSomthingStaff(){
      Object o = map.get(...);
      //...
   }
}

现在我正在测试子类,我必须模拟父类来调用一些方法。我如何在父模拟类中填充和使用 map ?

我有一张 map 的二传手。但是当我做下一个例子时:

Map<String, Example> mapExample = new HashMap<>();
mapExample.put(putDataHere);
Parent mockParent = Mockito.mock(Parent.class);
mockParent.setMap(mapExample);

我正在测试时 map 没有填充。

我应该 100% 使用 Mockito.CALLS_REAL_METHODS 还是存在解决此问题的正确方法?

最佳答案

Right now I am testing child class, and I have to mock parent class to call some methods

我不希望你在测试子类时模拟 parent 类(坦率地说,不知道你该怎么做)我希望你模拟一个被用作被测类的一个组件。

请注意:

Parent mockParent = Mockito.mock(Parent.class);
mockParent.setMap(mapExample);

不会执行任何操作,因为您在模拟上调用 setMap(),并且实际上不会执行任何操作。我怀疑这是你的问题。

关于java - 我应该如何在抽象模拟类中填写 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43070403/

相关文章:

java - 扫描仪 hasNext() ,但无法使用 nextLine() 读取

unit-testing - SwiftUI 预览因错误 : <unittest. 文件而中断 > 在任何目标中均未找到

unit-testing - 在哪里测试私有(private)方法返回的对象?

c# - NUnit - 用于测试事务的单元测试用例

java - Mockito、argThat 和 hasEntry

java - 将添加到网格的对象沿(用户)指定的方向移动到指定数量的网格单元上

java - 使用 "Microsoft Print to PDF"和 Java 将文档转换为 PDF

java - Powermock 无法模拟静态类

java - 确定字符串中的字符数

java - 如何模拟 HTTP 响应