草庐IT

Hamcrest-Matcher

全部标签

在Matcher中使用GTEST FLOAT比较

我喜欢编写一个具有一些浮点值的结构的匹配器:structPoint3D{floatx;floaty;floatz;}classInterface{virtualvoidSetPoint(Point3Dpoint)=0;}classMockInterface:publicInterface{MOCK_METHOD1(SetPoint,void(Point3Dpoint));}MATCHER_P(Point3DEq,point,"ComparisonofaPoint3D"){returnpoint.x==arg.x&&point.y==arg.y&&point.z==arg.z;}TEST(Poi

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 - Matcher.find() 如何工作

这个问题在这里已经有了答案:SCJP6regexissue(1个回答)关闭7年前。我正在测试Matcher和Pattern类的一个小stub...请参阅以下小stub..packagescjp2.escape.sequence.examples;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassSample_19{publicstaticvoidmain(Stringa[]){Stringstream="ab34ef";Patternpattern=Pattern.compile("\\d*")

java - Matcher.appendReplacement 用文字文本

我正在使用Matcher.appendReplacement()在我的替换字符串中有$2之前,它工作得很好:Notethatbackslashes(\)anddollarsigns($)inthereplacementstringmaycausetheresultstobedifferentthanifitwerebeingtreatedasaliteralreplacementstring.Dollarsignsmaybetreatedasreferencestocapturedsubsequencesasdescribedabove,andbackslashesareusedtoe

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

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