草庐IT

Hamcrest

全部标签

java - Hamcrest 平等 Collection

Hamcrest中是否有匹配器来比较集合的相等性?有contains和containsInAnyOrder但我需要equals不绑定(bind)到具体的集合类型。例如。我无法将Arrays.asList和Map.values与Hamcrestequals进行比较。提前致谢! 最佳答案 IcannotcompareArrays.asListandMap.valueswithHamcrestequals.这是因为hamcrest过于热心的类型签名。您可以进行这种相等性比较,但您需要在编译之前将List对象转换为Collection。我经

java - 如何在 Java 中使用 Hamcrest 来测试异常?

如何使用Hamcrest测试异常?根据https://code.google.com/p/hamcrest/wiki/Tutorial中的评论,“异常处理由Junit4使用预期属性提供。”所以我尝试了这个,发现它有效:publicclassMyObjectifyUtilTest{@TestpublicvoidshouldFindFieldByName()throwsMyObjectifyNoSuchFieldException{StringfieldName="status";Stringfield=MyObjectifyUtil.getField(DownloadTask.class

java - Hamcrest 何时使用 Is 或 equalTo

我是hamcrest的新手。在探索如何使用它的过程中,我一直对何时使用is或equalTo存疑。is和equalTo之间有什么区别吗?它的行为似乎是一样的。Assert.assertThat(actual,equalTo("blue"));Assert.assertThat(actual,is("red"));为什么你会使用一个而不是另一个? 最佳答案 Matchers的Javadoc很清楚。is所有的重载形式都是为了表现力。“主要”is是is(Matchermatcher)其中:DecoratesanotherMatcher,re

java - 泛型 hell - 如何将 joda.DateTime 传递给 Hamcrest Matcher.greaterThan?

JodaTime有publicfinalclassDateTimeextendsBaseDateTime{...}一直到publicinterfaceReadableInstantextendsComparable哈姆克雷斯特有publicstatic>org.hamcrest.MatchergreaterThan(Tvalue){...}如果我尝试greaterThan(newDateTime());然后我得到一个编译错误(Eclipse给出了大部分线索)ThegenericmethodgreaterThan(T)oftypeMatchersisnotapplicableforthe

java - org.junit.Assert.assertThat 比 org.hamcrest.MatcherAssert.assertThat 好吗?

我是JUnit和Hamcrest的新手,希望获得最佳实践建议,以便我可以决定首先研究哪些文档。对于初学者来说,这些assertThat方法中哪个更好?org.junit.Assert.assertThat(来自junit-4.11.jar)org.hamcrest.MatcherAssert.assertThat(来自hamcrest-core-1.3.jar)据一个人说,去年,"JUnithastheassertThatmethod,buthamcresthasitsownassertThatmethodthatdoesthesamething.".根据今年早些时候的消息,Hamcr

java - hamcrest:如何匹配数组是另一个数组的子集?

鉴于:int[]a={1,2,3,4};int[]b={1,2,3,4,5};如何使用hamcrest匹配器断言“a”是“b”的子集?以下作品assertThat(Arrays.asList(b),hasItems(a));但由于我是从“b”创建“a”,我更愿意将断言应用于“a”作为值。有点像assertThat(a,isSubsetOf(b));此外,最好避免将数组转换为列表。 最佳答案 您可以使用Every的组合和IsIn匹配器:assertThat(Arrays.asList(a),everyItem(in(b)));这会检查

java - Mockito、JUnit、Hamcrest、版本控制

默认情况下,Hamcrest所需的版本用于:JUnit4.11Hamcrest1.3Mockito-core1.9.5Hamcrest1.1Hamcrest1.1和1.3之间的API没有变化。目前我的测试用例尝试使用Hamcrest1.1运行JUnit4.11,但我合理surethatthisisabadidea.出于类似的原因,我怀疑尝试将Mockito-core1.9.5与Hamcrest1.3一起使用是alsoabadidea.怎么办?将Hamcrest1.1与最新的JUnit和Mockito结合使用将Hamcrest1.3与最新的JUnit和Mockito结合使用尝试修补Moc

java - 可靠的 Java 单元测试自动化? (JUnit/Hamcrest/...)

意图我正在寻找以下内容:可靠的单元测试方法我的方法中缺少什么?我做错了什么?我在做什么没必要?一种尽可能自动完成工作的方法当前环境Eclipse作为IDEJUnit作为测试框架,集成到Eclipse中Hamcrest作为“匹配器”库,以提高断言的可读性GoogleGuava用于前置条件验证目前的做法结构每个类一个测试类进行测试按静态嵌套类分组的方法测试测试方法命名以指定测试行为+预期结果Java指定的预期异常Annotation,不在方法名中方法论注意null值注意空List注意空String注意空数组注意由代码(后置条件)改变的对象状态不变量方法接受记录的参数类型边界检查(例如Int

java - 如何使用 Hamcrest 验证 map 大小

Map>mapMap=newHashMap>();目前这样断言assertThat(mapMap.size(),is(equalTo(1)));OrassertThat(mapMap.values(),hasSize(1));有没有其他方法,例如与列表一起使用的方法。assertThat(someListReferenceVariable,hasSize(1)); 最佳答案 好消息在当前masterbranchoftheJavaHamcrestproject中有一个匹配器可以完全满足您的需求。.你可以这样调用它:assertThat

java - 使用 junit @Rule、expectCause() 和 hamcrest 匹配器

我有一个测试:@RulepublicExpectedExceptionthrown=ExpectedException.none();...@TestpublicvoidtestMethod(){finalStringerror="errormessage";ThrowableexpectedCause=newIllegalStateException(error);thrown.expectCause(org.hamcrest.Matchers.equalTo(expectedCause));someServiceThatTrowsException.foo();}当通过mvn测试方