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

hamcrest库匹配器和hamcrest core匹配器之间的差异

蒋乐意
2023-03-14

它看起来像hamcrestorg。汉克雷斯特。Matchers类与org类非常相似。汉克雷斯特。CoreMatchers(尽管看起来,Matchers还有更多)。为什么我会选择使用CoreMatchers(除了看起来类稍微小一点之外),为什么这两个类如此相似?

共有3个答案

酆恩
2023-03-14

如果使用Android的JUnit测试(非连接测试),CoreMatchers似乎在已经包含的JUnit模块中可用,而matcher则不可用。

因此,为了节省开销,并避免导入另一个库,如果使用这些类,请考虑使用<代码> CoreMatcher < /代码>版本。

assertThat(chrome.twiddle(), is(equalTo(0)));

只能使用CoreMatchers。

南门鸿振
2023-03-14

如果您像我一样经常使用Mockito,您可能会:

import org.mockito.Mockito;

static import org.mockito.Mockito.*;

由于Mockito类扩展了Mockito的Matcher类,那么您最终可能会在Matcher类或其静态方法之间产生冲突。有了CoreMatcher,我就可以在与Mockito相同的类中使用JUnit派生的CoreMatcher,而不必在它们的使用点对它们进行完全限定。

朱啸
2023-03-14

Hamcrest匹配器分为几个模块。“核心”包括构建其他匹配器所需的最基本的匹配器和抽象类<代码>组织。汉克雷斯特。CoreMatchers仅包括这些匹配器的出厂方法。其他匹配器位于“库”模块中,按匹配对象的类型分组,是可选的<代码>组织。汉克雷斯特。匹配器包括两组匹配器。

你应该用哪一种?我静态地从后者导入所有内容,没有任何问题。也许编译时间会稍微长一点,但这对我来说从来都不是问题。除了JUnit导入之外,我还将其放在单元测试的顶部:

import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;

这使测试方法具有最佳可读性。

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

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

  • 问题内容: 做一个简单的测试时,我就在用Java编写正则表达式 但是在JavaScript中 这里发生了什么?我可以使我的Java regex模式“ q”的行为与JavaScript相同吗? 问题答案: 在JavaScript中,返回与使用的正则表达式匹配的子字符串。在Java中,检查整个字符串是否与正则表达式匹配。 如果要查找与正则表达式匹配的子字符串,请使用Pattern和Matcher类,例

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

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

  • 我可以使用哪种匹配器? { test: /\.js$/, loader: 'babel-loader' } - Matches just .js { test: /\.(js|jsx)$/, loader: 'babel-loader' } - Matches both js and jsx Generally put it's just a JavaScript regex so standar