草庐IT

Hamcrest

全部标签

java - 我如何使用 Hamcrest 检查 double 组中的每个元素是否为另一个数组中的每个元素的 "close"?

我想比较两个double组。使用vanillaJUnit,我可以:double[]a=newdouble[]{1.0,2.0,3.0};double[]b=newdouble[]{1.0,2.0,3.0};assertEquals(a,b,1e-10);我想知道如何使用Hamcrest执行此操作,最好不要创建自定义匹配器(如果可能)。类似于对数组中的每个元素使用“关闭”匹配器。 最佳答案 如果将a更改为Double[],则可以执行assertThat(a,arrayCloseTo(b,.2));使用此辅助方法:publicstati

java - 是否有用于 java.util.Optional 的 Hamcrest 匹配器?

我正在寻找一个Hamcrest匹配器来对返回java.util.Optional类型的方法进行单元测试。像这样的东西:@Testpublicvoidget__Null(){Optionalelement=Element.get(null);assertThat(sasi,isEmptyOptional());}@Testpublicvoidget__GetCode(){Optionalelement=Element.get(MI_CODE);assertThat(sasi,isOptionalThatMatches(allOf(hasproperty("code",MI_CODE),h

java - "Unchecked generic array creation for varargs parameter of type Matcher <? extends String> []"警告使用 CoreMatchers.allOf()

在我的UT代码中,摘录如下,我看到警告:UncheckedgenericarraycreationforvarargsparameteroftypeMatcher[]我读过另一个stackoverflowanswer关于将通用参数用于可变参数方法的问题。但是有没有一种巧妙的方法来稍微重组这个测试以摆脱丑陋的警告并避免@SuppressWarnings?packagestackoverflow;importorg.hamcrest.CoreMatchers;importorg.junit.Assert;importorg.junit.Test;importstaticorg.junit.

java - 用于检查集合中方法返回值的 Hamcrest 匹配器

hasProperty可以与hasItem一起使用来检查给定属性的值,例如:MatcherhasName=MatchershasProperty("name",is("Winkleburger"));assertThat(names,hasItem(hasName));当name是一个属性时,这很好,即:有一个名为getName()的方法。是否有匹配器可以检查不是属性的方法?IE:在这种情况下,它将检查集合中项目的方法name()而不是getName()的返回值。 最佳答案 您可以为此使用另一个内置的Hamcrest,Feature

java - 有什么方法可以在生产代码中使用 Hamcrest 匹配器?

我想使用hamcrest作为在if语句中使用的糖框架,而不是在带有断言的单元测试中,而是在原始生产代码中。有点像if(isNotEmpty(name))return//....或if(isEqual(name,"John"))return//...就像AssertThat但不会抛出错误,只是返回boolean值。可能吗? 最佳答案 它只是Java,您可以选择用它做什么。Hamcresthomepage说:Providesalibraryofmatcherobjects(alsoknownasconstraintsorpredicat

java - 我如何使用 JUnit 和 Hamcrest 比较 double ?

我正在使用JUnit和Hamcrest编写单元测试。我一直在使用以下方法比较double值:assertThat(result,is(0.5));但是,我现在需要比较计算值,但我不想与完整的double值进行比较。相反,我想比较接近度。我发现了一个名为IsCloseTo的类,但我不确定如何在assertThat中使用它,而且我在网上找不到任何示例。执行以下操作的正确语法是什么?//Ican'tdothisasIneedtoknowwhatmethods/classeswhateverIshouldbeusing//isCloseTodoesn'texist.assertThat(res

java - Eclipse 中的默认导入

有没有办法在Eclipse中自定义默认导入?例如,如果我默认打开一个新的JUnit测试类,我会得到这些导入:importstaticorg.junit.Assert.*;importorg.junit.Test;我想得到的:importstaticorg.junit.Assert.*;importorg.junit.Test;importstaticorg.hamcrest.Matchers.*; 最佳答案 不幸的是,Eclipse在重构和创建新实体时非常缺乏代码生成的可定制性。您可能想查看EclipseOptimizeImport

java - Hamcrest:如何为匹配器进行 instanceOf 和转换?

问题假设进行以下简单测试:@Testpublicvoidtest()throwsException{Objectvalue=1;assertThat(value,greaterThan(0));}测试不会编译,因为“greaterThan”只能应用于类型Comparable的实例。但我想断言value是一个大于零的整数。我如何使用Hamcrest表达这一点?到目前为止我尝试了什么:简单的解决方案是通过像这样转换匹配器来简单地删除泛型:assertThat(value,(Matcher)greaterThan(0));可能,但会生成编译器警告并感觉不对。一个冗长的选择是:@Testpub

java - 泛型 hell : hamcrest matcher as a method parameter

所以,让我们有一个字符串列表和一个接受Hamcrest匹配器并返回matches()的结果的函数。提供的匹配器的方法:publicbooleanmatchIt(finalMatcher>matcher){finalListlst=obtainListFromSomewhere();returnmatcher.matches(lst);}到目前为止一切顺利。现在我可以轻松调用:matchIt(empty());matchIt(anything());matchIt(hasItem("item"));matchIt(everyItem(equalToIgnoringCase("item")

java - 是否有 Hamcrest 匹配器来检查 Collection 既不为空也不为空?

是否有Hamcrest匹配器检查参数既不是空集合也不是null?我想我可以一直使用both(notNullValue()).and(not(hasSize(0))但我想知道是否有更简单的方法,但我错过了。 最佳答案 您可以结合IsCollectionWithSize和OrderingComparison匹配器:@Testpublicvoidtest()throwsException{Collectioncollection=...;assertThat(collection,hasSize(greaterThan(0)));}对于c