当前位置: 首页 > 知识库问答 >
问题:

Hamcrest匹配器-断言列表类型

夏宏旷
2023-03-14

问题所在

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

List<SomePOJO> myList;
    null

使用Hamcrest匹配器,是否有一种方法可以断言空列表是某种类型的参数化的(例如assertThat(myList,is(aListOf(Somepojo.class))))?

共有1个答案

郭永安
2023-03-14

你不能。这是由于类型擦除,您无法检查泛型类型。编译器将为您强制执行此操作。如果您真的想测试这一点,一个选项是获取第一个元素,并确保可以将其强制转换为somepojo。(或者选择抓住每一个元素并尝试演员阵容,但我相信这是矫枉过正)。

 类似资料:
  • 我试图使用org.hamcrest.matchers.contains(java.util.list >),但是编译器告诉我它无法解析该方法。 我甚至尝试了Hamcrest在这里给出的示例,但得到了相同的编译错误: 但随后我得到了另一个编译错误: 有没有办法恰当地使用这种方法?

  • 对于类; 我正在构建这样的自定义Matcher; 检查列表是否包含

  • 有没有Hamcrest可以让我明确断言,返回对象的的方法的结果至少有一个对象包含具有特定值的属性? 例如: 测试下的方法返回一个的集合。我需要断言至少有一个人叫彼得。

  • 它看起来像hamcrest(尽管看起来,还有更多)。为什么我会选择使用(除了看起来类稍微小一点之外),为什么这两个类如此相似?

  • 我想在TestNG测试中使用Hamcrest匹配器,特别是软断言。我怎么能这么做?我知道我可以在测试中使用Hamcrest的断言,例如:

  • 我的问题是:这是一个bug还是我遗漏了什么? 事实上,不同的匹配器以不同的格式返回消息是一个很大的问题,因为我试图编写一些自定义的验证框架,该框架使用匹配器,并且能够在出现任何错误时返回良好的人类可读的消息。我似乎不能为此目的使用方法...