gpt4 book ai didi

java - Hamcrest Matchers - 断言列表类型

转载 作者:搜寻专家 更新时间:2023-10-31 20:02:24 26 4
gpt4 key购买 nike

问题

我目前正在尝试使用 Hamcrest Matchers 断言返回的列表类型属于特定类型。例如,假设我的服务调用返回了以下列表:

List<SomePOJO> myList;

我想断言返回的列表是 SomePOJO 而不是 TheOtherPOJO 类型的参数化。但是,Hamcrest Matchers 似乎没有这种功能。

我尝试过的

经过一些研究,我看到了以下选项:

  1. 我已经看到有 hasItem(isA(SomePJO.class)),但这仅在列表中有元素时有效,如果列表为空则无效。
  2. 可以使用is(instanceOf(List.class)),但是这只会断言返回的项目是一个列表;它不会断言返回的列表类型
  3. 我还可以在 assert 语句之前立即向列表中添加一个元素,然后使用 assertThat(somePojo.get(0), is(instanceOf(SomePOJO.class))),但这是很干净。它也与第 1 点非常相似。

结论/问题

使用 Hamcrest Matchers,有没有办法断言空列表是某种类型的参数化(例如 assertThat(myList, is(aListOf(SomePOJO.class))))?

最佳答案

你不能。这是由于 type erasure ,您无法检查通用类型。编译器将为您强制执行此操作。如果您真的想对此进行测试,一个选择是获取第一个元素并确保您可以将其转换为 SomePOJO。 (或者抓取每个元素并尝试转换,但我认为这是矫枉过正)。

关于java - Hamcrest Matchers - 断言列表类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23935414/

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