为什么2个@Injectable具有相同类型的成员无法注入构造函数

问题描述

一个Data类,其中有2个Map<String,String>成员:

class Data {
    private Map<String,String> first;
    private Map<String,String> second;
    Data(Map<String,String> first,Map<String,String> second) {
        this.first = first;
        this.second = second;
    }
}

在单元测试中,我打算使用 JMockit Data上进行测试:

public class DataTest {
    @Tested
    priavate Data data;
    @Injectable
    private Map<String,String> first;
    @Injectable
    private Map<String,String> second;
}

不幸的是,运行测试时会有no constructor in tested class...

我试图从构造函数删除一个参数,然后注入将起作用。但是,如果两个参数的类型都为Map ,它将失败。有可能解决这个问题吗?

解决方法

在最新版本的JMockit中,Map不再是可模拟字段。我相信您将需要创建真正的Map类。因此,私有Map 首先=新的HashMap ();