Questions tagged «hamcrest»

Hamcrest是约束类的开放源代码库,通常用于其他框架(如单元测试,模拟或集合)来匹配对象和值。

13
在IntelliJ 10.5中运行测试时得到“ NoSuchMethodError:org.hamcrest.Matcher.describeMismatch”
我正在使用JUnit-dep 4.10和Hamcrest 1.3.RC2。 我创建了一个自定义匹配器,如下所示: public static class MyMatcher extends TypeSafeMatcher<String> { @Override protected boolean matchesSafely(String s) { /* implementation */ } @Override public void describeTo(Description description) { /* implementation */ } @Override protected void describeMismatchSafely(String item, Description mismatchDescription) { /* implementation */ } } 当使用Ant从命令行运行时,它工作得很好。但是,从IntelliJ运行时,它失败并显示: java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18) at …

7
为什么我应该使用Hamcrest-Matcher和assertThat()而不是传统的assertXXX()-方法
当我查看Assert类JavaDoc中的示例时 assertThat("Help! Integers don't work", 0, is(1)); // fails: // failure message: // Help! Integers don't work // expected: is <1> // got value: <0> assertThat("Zero is one", 0, is(not(1))) // passes 可以说,我看不出有什么大的优势assertEquals( 0, 1 )。 如果结构变得更复杂,但是对于消息,这很好,但是您看到更多的优势了吗?可读性?
153 java  testing  junit  junit4  hamcrest 



7
Hamcrest比较收藏
我正在尝试比较2个列表: assertThat(actual.getList(), is(Matchers.containsInAnyOrder(expectedList))); 但是主意 java: no suitable method found for assertThat(java.util.List<Agent>,org.hamcrest.Matcher<java.lang.Iterable<? extends model.Agents>>) method org.junit.Assert.<T>assertThat(T,org.hamcrest.Matcher<T>) is not applicable (no instance(s) of type variable(s) T exist so that argument type org.hamcrest.Matcher<java.lang.Iterable<? extends model.Agents>> conforms to formal parameter type org.hamcrest.Matcher<T>) method org.junit.Assert.<T>assertThat(java.lang.String,T,org.hamcrest.Matcher<T>) is not applicable (cannot instantiate from arguments because actual and …
114 java  junit  hamcrest 


7
如何断言Iterable包含具有特定属性的元素?
假设我要使用此签名对方法进行单元测试: List<MyItem> getMyItems(); 假设MyItem是一种Pojo,它具有许多属性"name",可通过访问其中一个属性getName()。 我只想验证的是List<MyItem>或Iterable包含两个MyItem实例,它们的"name"属性值为"foo"和"bar"。如果其他属性不匹配,那么我真的不在乎此测试的目的。如果名称匹配,则表示测试成功。 如果可能,我希望它成为一线客。这是我想做的一些“伪语法”。 assert(listEntriesMatchInAnyOrder(myClass.getMyItems(), property("name"), new String[]{"foo", "bar"}); Hamcrest会适合这种事情吗?如果是这样,上面的伪语法的hamcrest版本到底是什么?

8
如何一起使用JUnit和Hamcrest?
我不明白JUnit 4.8如何与Hamcrest匹配器一起工作。有内部定义了一些匹配器junit-4.8.jar在org.hamcrest.CoreMatchers。同时,也有一些其他的匹配器hamcrest-all-1.1.jar中org.hamcrest.Matchers。那么,去哪儿呢?我是否应该在项目中明确包含hamcrest JAR并忽略JUnit提供的匹配器? 特别是,我对empty()匹配器感兴趣,并且在任何这些jar中都找不到它。我还需要其他东西吗?:) 还有一个哲学问题:为什么JUnit将org.hamcrest包包含在自己的发行版中而不是鼓励我们使用原始的hamcrest库?
88 java  junit  hamcrest 

2
Hamcrest的多个正确结果(是否有匹配器?)
我对匹配者来说还比较陌生。我正在和JUnit一起使用hamcrest玩弄,我有点喜欢。 有没有办法指出多个选择之一是正确的? 就像是 assertThat( result, is( either( 1, or( 2, or( 3 ) ) ) ) ) //does not work in hamcrest 我正在测试的方法返回集合的一个元素。该列表可能包含多个候选。我当前的实现返回第一击,但这不是必须的。如果返回任何可能的候选人,我希望我的测试用例能够成功。您将如何用Java表达这一点? (我接受hamcrest替代方案)
76 java  junit  hamcrest  matcher 

2
断言集合不包含项目
使用用于Java的hamcrest库,可以执行以下操作的一种很好的可读方式: assertThat(someCollection, hasItem(someItem)) 我要确保其中someCollection不包含任何项目someItem
75 java  hamcrest 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.