这将是一个容易的,但我无法找到它们之间的区别和使用哪一个,如果我的类路径中都包含lib的话?Mockito's Matcher vs Hamcrest Matcher?
回答
Hamcrest匹配方法返回Matcher<T>
和匹配器的Mockito回报T.因此,举例来说:org.hamcrest.Matchers.any(Integer.class)
返回org.hamcrest.Matcher<Integer>
一个实例,并org.mockito.Matchers.any(Integer.class)
返回Integer
一个实例。
这意味着您只能在签名中预期使用Matcher<?>
对象时使用Hamcrest匹配器 - 通常在assertThat
调用中。当您在调用模拟对象的方法时设置期望或验证时,请使用Mockito匹配器。
例如(与完全合格的名称为清楚起见):
@Test
public void testGetDelegatedBarByIndex() {
Foo mockFoo = mock(Foo.class);
// inject our mock
objectUnderTest.setFoo(mockFoo);
Bar mockBar = mock(Bar.class);
when(mockFoo.getBarByIndex(org.mockito.Matchers.any(Integer.class))).
thenReturn(mockBar);
Bar actualBar = objectUnderTest.getDelegatedBarByIndex(1);
assertThat(actualBar, org.hamcrest.Matchers.any(Bar.class));
verify(mockFoo).getBarByIndex(org.mockito.Matchers.any(Integer.class));
}
如果你想在一个需要匹配的Mockito上下文使用Hamcrest匹配器,你可以使用org.mockito.Matchers.argThat
匹配。它将Hamcrest匹配器转换为Mockito匹配器。所以,假设你想以某种精度匹配一个double值(但不是很多)。在这种情况下,你可以这样做:
when(mockFoo.getBarByDouble(argThat(is(closeTo(1.0, 0.001))))).
thenReturn(mockBar);
刚提的是,在2的Mockito的' arg与Hamcrest'Matcher's一起工作的超载被移动了'MockitoHamcrest'。 [Mockito 2中的新增功能](https://github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2#incompatible)在其“与1.10不兼容的更改”一节中讨论了此问题。 –
- 1. Hamcrest Matchers.contains matcher not working(?)
- 2. Hamcrest Matcher with junit style diff
- 3. Hamcrest matcher比较来自JSON的double值
- 4. java.util.Optional是否有任何Hamcrest Matcher?
- 5. 我如何获得Hamcrest的Matcher类?
- 6. hamcrest-library Matcher与hamcrest-core CoreMatchers之间的区别
- 7. Select2 Custom Matcher
- 8. Hamcrest Matcher在字符串列表中没有重复项?
- 9. 在nUnit中,与Hamcrest的Matchers.containsInAnyOrder(Matcher ... matchers)等效的是什么?
- 10. 在自定义Hamcrest Matcher中缓存变量
- 11. Espresso Intent Custom Intent Matcher
- 12. RSpec Array instance_of Argument Matcher
- 13. 了解Pattern和Matcher
- 14. Clang AST Matcher的“AND”和“OR”
- 15. 规范不Mockito Matchers.any [FooException] matcher
- 16. Pattern和Matcher是Android的
- 17. shoulda-matcher错误验证length_of
- 18. Pattern,Matcher的用法替换
- 19. 比较者的Junit Matcher?
- 20. 使用hamcrest matcher进行jUnit测试 - 如何测试集合的大小。
- 21. 是否有一个用于执行XML文档匹配的python hamcrest matcher库?
- 22. Scalatest在使用Matcher时显示错误
- 23. cucumber,rspec,webrat if else else on matcher
- 24. 使用缓冲对象()Matcher类
- 25. Pattern类和Matcher类之间的区别
- 26. 使用@variable()@ matcher时出现Json错误
- 27. 用matcher解析协议段落?
- 28. Matcher在匹配后抛出IllegalStateException
- 29. Groovy中Matcher类中的Count属性
- 30. Java - Matcher在访问组后抛出IllegalStateException
相关:[?如何匹配器的Mockito工作(http://stackoverflow.com/a/22822514/1426891) –