Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 断言列表只包含一个满足条件的元素_Java_Junit_Java 8_Junit4_Assertj - Fatal编程技术网

Java 断言列表只包含一个满足条件的元素

Java 断言列表只包含一个满足条件的元素,java,junit,java-8,junit4,assertj,Java,Junit,Java 8,Junit4,Assertj,在我的JUnit测试中,我想断言一个列表只包含一个满足给定条件的元素(列表中可以有很多元素,但只有一个应该满足该条件)。我写了下面的代码,但我想知道是否有可能摆脱“新条件”-部分并使用“纯”lambda?还是有其他更优雅的方式来完成我想做的事情 class Foo { String u; Foo(String u) { this.u = u; } String getIt() { return u; } } @Test public void testIt() { List

在我的JUnit测试中,我想断言一个列表只包含一个满足给定条件的元素(列表中可以有很多元素,但只有一个应该满足该条件)。我写了下面的代码,但我想知道是否有可能摆脱“新条件”-部分并使用“纯”lambda?还是有其他更优雅的方式来完成我想做的事情

class Foo {
  String u;

  Foo(String u) { this.u = u; }

  String getIt() { return u; }
}

@Test
public void testIt() {
  List<Foo> list = Lists.newArrayList(new Foo("abc"), new Foo("xyz"));

  assertThat(list)
        .haveExactly(1, new Condition<>(
                x -> "xyz".equals(x.getIt()),
                "Fail"));
}
class-Foo{
u字串;
Foo(字符串u){this.u=u;}
字符串getIt(){return u;}
}
@试验
公开无效测试(){
List List=Lists.newArrayList(newfoo(“abc”)、newfoo(“xyz”);
资产(清单)
.确切地说(1,新情况(
x->“xyz”.equals(x.getIt()),
"不合格";;
}
这应该可以工作(但我还没有测试):

assertThat(list).extracting(Foo::getIt)
                .containsOnlyOnce("xyz");