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

如何处理Hamcrest匹配器的此错误

酆高翰
2023-03-14
List<String> poster_path_image2;         
assertThat(poster_path_image2, anyOf(startsWith("https:"), startsWith("null")));

我需要检查是否一个url是有效的和空值是可接受的以及。我是这个图书馆的新手,被这个错误难倒了。

共有1个答案

巢星纬
2023-03-14

它看起来像poster_path_image2属于list类型。但是匹配器startswith只能处理string。检查变量的类型以及匹配器能够处理的内容。

也许您希望获取列表的第一个元素,或者对列表中的每个项重复断言。

String path = "your test String";       
assertThat(path, anyOf(startsWith("https:"), is(nullValue())));

我更改了第二个匹配器,因为我认为您希望检查字符串是否为null,而不是是否包含字符串值“null”

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

  • 我试图使用JUnit/Hamcrest断言集合至少包含一个自定义逻辑断言为true的元素。我希望有像“anyOf”这样的匹配器,它采用lambda(或匿名类定义),在这里我可以定义自定义逻辑。我试过TypeSafeMatcher,但不知道该怎么处理它。 我不认为任何一个是我想要的,因为这似乎需要一个匹配者的名单。

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

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

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

  • 输入: null 目标是使以下语句可编译: 这里有什么用?它想让我<编码>匹配器<?super java.util.list >并告诉我通过了 。那么如何在这里传递匹配器集合呢? 有一个关于将集合与hamcrest进行比较的问题,但没有传递Matchers集合的示例,而不是元素。