我正在编写一个单元测试,在这个测试中,我正在存根各种类,在某个阶段,我需要返回Set的一个实例作为值。我如何创建一个插入值的实例
private Set<?> keys;
String[] keys1 = new String[2];
keys1[0] = "filter1";
keys1[1] = "filter2";
keys = new HashSet<>(Arrays.asList(keys1));
when(ctx.getFilter()).thenReturn(keys);
Set<?>
的真正含义是"它是某种类型的对象集,但我不知道具体是哪种类型
String[] keys1 = new String[2];
keys1[0] = "filter1";
keys1[1] = "filter2";
keys = new HashSet<String>(Arrays.asList(keys1));
假设您在测试方法中有这个。至少有一个错误是,您不应该将本地变量keys
声明为private
。
您可能遇到的另一个问题是ctx.getFilter()
的返回类型,您在问题中没有给出。但它必须与keys
的类型相匹配。类型Set<?>
(意味着任何类型的集合)不像返回类型那样常见,因为不知道内容的类型是什么,所以如果不进行强制转换,就无法对内容进行太多处理。
以下内容应该有效:
Set<?> keys;
String[] keys1 = new String[2];
keys1[0] = "filter1";
keys1[1] = "filter2";
keys = new HashSet<>(Arrays.asList(keys1));
when(ctx.getFilter()).thenReturn(keys);