jjzjj

assertThat

全部标签

java - 有没有办法用 Hamcrest 对嵌套属性进行深入比较

我的大部分测试都使用hamcrest,但遇到了一个问题,它无法测试对象图中下一层的属性。下面是我的测试用例的片段finalListfoos=fooRepository.findAll(spec);assertThat(results,is(notNullValue()));assertThat(results,hasItem(hasProperty("id.fooID1",equalTo("FOOID1"))));所以在这里我想检查foos列表中是否有属性id.fooID1equla到FOOID1。在这里我要向下一级检查我的嵌套属性。这目前在hamcrest中不起作用,我得到以下信息错

java - 断言集合 "Contains at least one non-null element"

我想验证一个集合是否包含至少一个非空元素。我试过is(not(empty())),但是这在下面的测试中通过了。importorg.junit.Test;importjava.util.ArrayList;importjava.util.Collection;importstaticorg.hamcrest.CoreMatchers.is;importstaticorg.hamcrest.MatcherAssert.assertThat;importstaticorg.hamcrest.Matchers.empty;importstaticorg.hamcrest.Matchers.no

java - Hamcrest 错误与非此即彼和 null 或不正确的用法?

当出现以下情况时,我感到很震惊:assertThat(null,either(is(nullValue())).or(notNullValue()));失败:java.lang.AssertionError:Expected:(isnullornotnull)but:wasnullatorg.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)atorg.junit.Assert.assertThat(Assert.java:956)atorg.junit.Assert.assertThat(Assert.java:923)a

java - 如何使用isA-Matcher

我有一个特定的方法可以提供Restriction-object(其中Restriction是一个接口(interface))。由于它的实现已经过测试,我只想测试我的方法是否真的提供了RestrictionImpl-目的。我看到有匹配器可以与assertThat一起使用我想,isA-matcher是这个任务需要的东西。简化后的代码如下所示:publicstaticRestrictiongetRestriction(){returnnewRestrictionImpl();}我的测试看起来像那样;@TestpublicvoidgetRestriction_returnsRestrictio

java - 如何将 Class<?> 与 Hamcrest Matcher 中的特定 Class 实例进行匹配?

我希望能够断言注释值与预期的类匹配:importorg.junit.Test;importstaticorg.hamcrest.CoreMatchers.*;importstaticorg.hamcrest.MatcherAssert.assertThat;publicfinalclassAnnotatedClassTest{@TestpublicvoidsomeAnnotationIsString(){assertThat(AnnotatedClass.class.getAnnotation(SomeAnnotation.class).value(),is(equalTo(Strin

java - 在 Java 中使用 Lambda 进行模棱两可的方法调用

我定义了一个静态的assertThat方法来扩展AssertJ。此方法接受以下类型的lambda表达式:@FunctionalInterfacepublicinterfaceAction{voidexecute()throwsException;}签名看起来像这样:publicstaticExceptionAssertassertThat(Actionaction)我想将此方法与静态导入一起使用。但它是模棱两可的。编译器不知道是否assertThat(Iterable)或者应该使用我的方法。我不明白void方法可能与返回Iterator的方法冲突.知道如何解决这个冲突(不用在asser

java - 如何断言两个 List<String> 相等,忽略顺序

我正在使用AssertJ我试图断言两个List包含相同的字符串,忽略顺序。Listexpected=Arrays.asList("Something-6144-77.pdf","d-6144-77.pdf","something-6144-78.pdf","Something-6144-8068.pdf");Listactual=newArrayList();assertThat(actual.size()).isEqualTo(expected.size());//Thislinegivestheerror:"ThemethodcontainsExactlyInAnyOrder(St

java - Hamcrest assertThat 模棱两可?

我从一所大学获得了一些示例代码,导入了项目并尝试运行测试:方法assertThat(Integer,Matcher)对于MyClass类型是不明确的每个assertThat都被标记为红色并带有相同的错误消息,所以我尝试编写描述问题的最简单的测试:importstaticorg.hamcrest.MatcherAssert.*;importstaticorg.hamcrest.Matchers.*;importstaticorg.junit.Assert.*;@TestpublicvoidwhenAssertThatThenItIsAmbiguous(){Listlist=Arrays.

java - IDEA、Hamcrest 和静态导入

我的maven项目包括186187org.hamcrest188hamcrest-all1891.3190当我输入assertThat..我想让IDEA弄清楚需要以下内容importstaticorg.hamcrest.MatcherAssert.assertThat;相反,我明白了。如何纠正?如何让IDEA执行静态导入? 最佳答案 打开括号,你会得到静态导入方法的提示。在添加括号之前,IntelliJ不会理解这是您尝试引用的方法。换句话说,输入assertThat(然后输入ALT-ENTER。

java - 多次调用 CountDownLatch.await(int) 超时

我使用CountDownLatch等待来自另一个组件(在不同线程中运行)的特定事件。以下方法符合我的软件的语义,但我不确定它是否按我预期的那样工作:mCountDownLatch.await(3000,TimeUnit.MILLISECONDS)otherComponent.aStaticVolatileVariable=true;mCountDownLatch.await(3500,TimeUnit.MILLISECONDS);...场景应该是这样的:我等了3秒,如果latch没有倒数到0,我就用那个变量通知其他组件,然后我最多等3.5秒。如果再次超时,那我就不管了,继续进行其他操作