Java 在测试用例中是否可以使用Mockito返回LinkedHashMap的空列表

Java 在测试用例中是否可以使用Mockito返回LinkedHashMap的空列表,java,android,unit-testing,mockito,Java,Android,Unit Testing,Mockito,我正在编写一个单元测试,它在App类中访问LinkedHashMap的一个公共变量。我想模拟这个返回空列表,请问我怎么做 应用程序有这个变量 public LinkedHashMap<String, ArrayList<QCCheck>> mapOfQCC = new LinkedHashMap<>(); 提前谢谢 RLinkedHashMap keepOldIfNeed=app.mapOfQCC;//如果需要,请将列表保存在对象中 ap

我正在编写一个单元测试,它在App类中访问LinkedHashMap的一个公共变量。我想模拟这个返回空列表,请问我怎么做

应用程序有这个变量

  public LinkedHashMap<String, ArrayList<QCCheck>> mapOfQCC =
        new LinkedHashMap<>();
提前谢谢 R

LinkedHashMap keepOldIfNeed=app.mapOfQCC;//如果需要,请将列表保存在对象中
app.mapOfQCC=新建LinkedHashMap();//这是空的

错误消息是不言自明的。 您正在尝试存根字段访问:

every(app.mapOfQCC).thenReturn(LinkedHashMap<String, ArrayList<QCCheck>>())
every(app.mapOfQCC).然后返回(LinkedHashMap())
这在Mockito中是不可能的。 只能使用存根方法调用

您有两种选择:

  • 为您的字段提供一个getter(并可能使字段私有)。干杯
  • 在测试中设置字段。这是公开的。没有什么能阻止你那样做
when() requires an argument which has to be 'a method call on a mock'.
For example:
    when(mock.getArticles()).thenReturn(articles);
LinkedHashMap<String, ArrayList<QCCheck>> keepOldIfNeed = app.mapOfQCC; // keep the list in object if you need 
app.mapOfQCC = new LinkedHashMap<>(); // this is empty
every(app.mapOfQCC).thenReturn(LinkedHashMap<String, ArrayList<QCCheck>>())