Tag: hamcrest

使用Hamcrest地图平等

我想用hamcrest来声明两个地图是平等的,也就是说,它们有相同的一组键指向相同的值。 我目前最好的猜测是: assertThat( affA.entrySet(), hasItems( affB.entrySet() ); 这使: Asserttypes中的assertThat(T,Matcher)不适用于参数(Set>,Matcher >>>) 我也研究了containsAll的变体,还有一些由hamcrest包提供的变体。 任何人都可以指向正确的方向吗? 还是我必须写一个自定义的匹配器?

使用Hamcrest 1.3和JUnit 4.11的NoSuchMethodError

另一个JUnit&Hamcrest组合的NoSuchMethodError实例。 出错代码: assertThat(dirReader.document(0).getFields(), hasItem( new FeatureMatcher<IndexableField, String>(equalTo("Patisnummer"), "Field key", "Field key") { @Override protected String featureValueOf(IndexableField actual) { return actual.name(); } } )); IndexerTest.java中的注释行152-157(commit ac72ce ) 导致NoSuchMethodError(请参阅http://db.tt/qkkkTE78获取完整的输出): java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V at org.hamcrest.FeatureMatcher.matchesSafely(FeatureMatcher.java:43) at org.hamcrest.TypeSafeDiagnosingMatcher.matches(TypeSafeDiagnosingMatcher.java:55) at org.hamcrest.core.IsCollectionContaining.matchesSafely(IsCollectionContaining.java:25) at org.hamcrest.core.IsCollectionContaining.matchesSafely(IsCollectionContaining.java:14) at org.hamcrest.TypeSafeDiagnosingMatcher.matches(TypeSafeDiagnosingMatcher.java:55) at org.junit.Assert.assertThat(Assert.java:770) at org.junit.Assert.assertThat(Assert.java:736) at indexer.IndexerTest.testIndexContainsField(IndexerTest.java:152) 设置: JUnit 4.11 Hamcrest 1.3 使用Maven的surefire插件(版本2.14),它使用了JUnitCoreProvider Java 7(OpenJDK) 看到pom (commit […]

hamcresttesting总是失败

我正在使用hamcrest 1.3来testing我的代码。 这只是一个死亡。 我试图testing它,以确保生成的数字是小于13.我有一个打印语句,打印什么数字生成。 产生的数字总是less于13,但是testing总是失败。 有什么我做错了吗? 这是我正在testing的代码。 import java.util.Random; public class Die { private int numSides; Random rand; public Die(int numSides){ this.numSides = numSides; rand = new Random(System.currentTimeMillis()); } public int roll(){ return rand.nextInt(numSides) + 1; } } 这是我的testing代码。 import static org.hamcrest.Matchers.*; import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; public class DieTest { @Test public void testRoll() […]

使用之间的Hamcrest号码比较

Hamcrest有没有办法在数字范围内比较一个数字? 我正在寻找这样的东西: assertThat(50L, is(between(12L, 1658L)));

断言集合不包含项目

使用Java的hamcrest库,相反的方法是什么? assertThat(someCollection, hasItem(someItem)) 我想确保someCollection不包含项目someItem

()是什么使用过去的Hamcrest方法的替代?

我现在使用下面的代码来断言一个boolean值,但是org.hamcrest.Matchers.is()方法已经被弃用了。 assertThat(someValue, is(false)); 有没有一个简单的替代语法来testing布尔值,而不是诉诸assertTrue() ,它给你糟糕的失败消息,如“java.lang.AssertionError” 收到评论/回答后编辑 我最初的担心是因为Eclipse显示了以下的导入语句而被弃用 在查看Hamcrest API文档时,有3个重载的is()方法变体,其中只有一个被弃用。 因此,要澄清来自@mark的评论和来自@matt的回答,我上面发布的is()的使用是有效的,并且不推荐使用。

Hamcrest库Matcher和Hamcrest核心CoreMatchers之间的区别

它看起来像hamcrest org.hamcrest.Matchers类是非常相似org.hamcrest.CoreMatchers (虽然它看起来像Matchers有更多)。 为什么我会select使用CoreMatchers (除了看起来类似于稍小),为什么这两个类如此相似呢?

为什么这段代码不试图使用Hamcrest的hasItems进行编译?

为什么这不能编译,哦,该怎么办? import static org.junit.Assert.assertThat; import static org.junit.matchers.JUnitMatchers.hasItems; ArrayList<Integer> actual = new ArrayList<Integer>(); ArrayList<Integer> expected = new ArrayList<Integer>(); actual.add(1); expected.add(2); assertThat(actual, hasItems(expected)); 错误从评论复制: cannot find symbol method assertThat(java.util.ArrayList<java.lang.Integer>, org.hamcreset.Matcher<java.lang.Iterable<java.util.ArrayList<java.lang.Integer>>>)

Hamcrest比较collections

我试图比较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 formal argument lists differ in […]

Hamcrest有多个正确的结果(有没有匹配器?)

对于匹配者,我相对比较陌生。 我正在与JUnit结合使用Hamcrest ,我有点儿喜欢它。 有没有办法说明多种select中的一种是正确的? 就像是 assertThat( result, is( either( 1, or( 2, or( 3 ) ) ) ) ) //does not work in hamcrest 我正在testing的方法返回集合的一个元素。 该列表可能包含多个候选人。 我目前的实现返回第一个命中,但这不是一个要求。 如果任何可能的候选人被退回,我希望我的testing成功。 你怎么用Javaexpression这个呢? (我是开放的hamcrest替代品)