gpt4 book ai didi

java - Mockito - 如何使用列表匹配器限制列表类型?

转载 作者:行者123 更新时间:2023-12-02 03:26:56 27 4
gpt4 key购买 nike

我有以下界面:

public interface ListHandler {

public boolean add(List<?> list, Object element);

}

为此,我想确保在测试中它只接收特定类型的列表,例如String。我编写了以下测试代码:

@Test
public void testAddOnlyString() {
boolean actual = false;

when(this.listHandlerMock.add(
Matchers.anyListOf(String.class),
Matchers.anyString()
)).thenReturn(true);

actual = this.listHandlerMock.add(new ArrayList<Integer>(), 1);
assertTrue(actual);

verify(this.listHandlerMock).add(
Matchers.anyListOf(String.class),
Matchers.anyString()
);
}

但是测试正确通过。

最佳答案

简短回答:你不能。列表的类型在编译时被清理(类型删除)例如,这将打印 true:

System.out.println(new ArrayList<Integer>().equals(new ArrayList<String>()));

也来自 Matchers.anyListOf 的文档:

This method don't do any type checks, it is only there to avoid castingin your code.

如果列表不为空,您可以构建一个匹配器来检查每个条目是否具有您期望的类型,但对于空列表,您无能为力。

关于java - Mockito - 如何使用列表匹配器限制列表类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38718856/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com