如何断言Set具有与hamcrest具有精确属性的项目

时间:2016-02-12 12:12:08

标签: java mocking mockito assert hamcrest

我一直在尝试使用这个solution来判断我的Set是否使用hamcrest给定了属性的集合,但是我有:

  

java.lang.NoSuchMethodError:   org.hamcrest.Matcher.describeMismatch(Ljava /郎/对象; Lorg / hamcrest /描述;)V     在org.hamcrest.Condition $ Matched.matching(Condition.java:52)

进口:

import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasProperty;
import static org.junit.Assert.assertThat;

代码:

assertThat(mySet, contains(hasProperty("id", equalTo("expectedId"))));

你有什么想法如何断言好吗?

1 个答案:

答案 0 :(得分:1)

好吧,你应该试着让assertThat为你做的工作。

config.wrappers :inline_checkbox_two, :tag => 'div', :class => 'control-group', :error_class => 'error' do |b|
    b.use :hint,  :wrap_with => { :tag => 'p', :class => 'help-block' }
    # everything else should use the same definition as the above
  end

此处的限制:假设您的集合仅包含该属性值。

否则,您可以选择:

Set<WhateverPropertyTypeYouAreUsing> expectedSet = Collections.singleton( ... create a property object with that id/value);

assertThat(mySet, is(expectedSet))

(可能还有一条额外的消息可以更好地描述失败的断言)。

Prereq:你的属性类应该以合理的方式实现equals()。