在AssertJ中测试一件事是否成立

迈克尔·皮菲尔

我正在将某些测试从Hamcrest转换为AssertJ。在Hamcrest中,我使用以下代码段:

assertThat(list, either(contains(Tags.SWEETS, Tags.HIGH))
    .or(contains(Tags.SOUPS, Tags.RED)));

即,列表可以是那个或那个。如何在AssertJ中表达这一点?anyOf函数(当然,任何一个都不,而是第二个问题)需要一个Condition;。我自己实现了这一点,但似乎这应该是一个普通的情况。

乔尔·科斯蒂廖拉

编辑:

由于3.12.0 AssertJ提供了satisfiesAnyOf哪个成功是给定断言之一,

assertThat(list).satisfiesAnyOf(
    listParam -> assertThat(listParam).contains(Tags.SWEETS, Tags.HIGH),
    listParam -> assertThat(listParam).contains(Tags.SOUPS, Tags.RED)
);

原始答案:

不,这是Hamcrest比AssertJ更好的地方。

编写以下断言:

Set<String> goodTags = newLinkedHashSet("Fine", "Good");
Set<String> badTags = newLinkedHashSet("Bad!", "Awful");
Set<String> tags = newLinkedHashSet("Fine", "Good", "Ok", "?");

// contains is statically imported from ContainsCondition
// anyOf succeeds if one of the conditions is met (logical 'or') 
assertThat(tags).has(anyOf(contains(goodTags), contains(badTags)));

您需要创建以下条件:

import static org.assertj.core.util.Lists.newArrayList;    
import java.util.Collection;    
import org.assertj.core.api.Condition;

public class ContainsCondition extends Condition<Iterable<String>> {
  private Collection<String> collection;

  public ContainsCondition(Iterable<String> values) {
    super("contains " + values);
    this.collection = newArrayList(values);
  }

  static ContainsCondition contains(Collection<String> set) {
    return new ContainsCondition(set);
  }

  @Override
  public boolean matches(Iterable<String> actual) {
    Collection<String> values = newArrayList(actual);
    for (String string : collection) {
      if (!values.contains(string)) return false;
    }
    return true;
  };
}

如果您希望标签在一个集合中的存在暗示它们不在另一集合中,则可能不是您。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript:如何判断跨度是否是段落中的第一件事?

来自分类Dev

尝试在我的JavaScript代码中理解“ this”(一件事有效,另一件事无效)

来自分类Dev

在正则表达式中,捕获一件事,或另一件事,或两者兼而有之

来自分类Dev

Windows用户只是一件事

来自分类Dev

制作只做一件事的函数

来自分类Dev

在iPad上显示一件事,在Apple TV上显示另一件事?

来自分类Dev

JLabel将文本从一件事更改为另一件事

来自分类Dev

如何选择一件事,如果条件为假,则选择另一件事

来自分类Dev

为什么javascript返回另一件事,而php又返回另一件事?

来自分类Dev

“哪个”报告一件事,实际命令是另一件事

来自分类Dev

首先在HashMap中获得第一件事?

来自分类Dev

如何选择数组中的最后一件事?

来自分类Dev

首先在HashMap中获得第一件事?

来自分类Dev

android中的任务堆栈和后堆栈是同一件事吗

来自分类Dev

包括目录中的所有内容,但只有一件事

来自分类Dev

不同目录中的相同名称是同一件事吗?

来自分类Dev

我如何只能从文本文件中读取一件事?

来自分类Dev

如何根据值在不同列中显示一件事的结果

来自分类Dev

用户接受测试(UAT)和端到端(E2E)测试是否是同一件事?

来自分类Dev

使用jQuery检查某个元素是否是另一个元素中的第一件事

来自分类Dev

从一行中获取一件事,然后将其与另一行中的一件事连接起来

来自分类Dev

CSS选择器允许一件事,但不允许另一件事?

来自分类Dev

使用joi进行条件验证:如果属性值大于4,则执行一件事,否则执行另一件事

来自分类Dev

显示器分辨率说一件事,但显示另一件事

来自分类Dev

如何打开一件事然后又打开另一件事

来自分类Dev

使用 onClick 调用相同的函数适用于一件事而不是另一件事?

来自分类Dev

快速排序算法-做同一件事的方法有很多?

来自分类Dev

const和constexpr最终会是同一件事吗?

来自分类Dev

“ var”和“ variant”是同一件事吗?

Related 相关文章

  1. 1

    Javascript:如何判断跨度是否是段落中的第一件事?

  2. 2

    尝试在我的JavaScript代码中理解“ this”(一件事有效,另一件事无效)

  3. 3

    在正则表达式中,捕获一件事,或另一件事,或两者兼而有之

  4. 4

    Windows用户只是一件事

  5. 5

    制作只做一件事的函数

  6. 6

    在iPad上显示一件事,在Apple TV上显示另一件事?

  7. 7

    JLabel将文本从一件事更改为另一件事

  8. 8

    如何选择一件事,如果条件为假,则选择另一件事

  9. 9

    为什么javascript返回另一件事,而php又返回另一件事?

  10. 10

    “哪个”报告一件事,实际命令是另一件事

  11. 11

    首先在HashMap中获得第一件事?

  12. 12

    如何选择数组中的最后一件事?

  13. 13

    首先在HashMap中获得第一件事?

  14. 14

    android中的任务堆栈和后堆栈是同一件事吗

  15. 15

    包括目录中的所有内容,但只有一件事

  16. 16

    不同目录中的相同名称是同一件事吗?

  17. 17

    我如何只能从文本文件中读取一件事?

  18. 18

    如何根据值在不同列中显示一件事的结果

  19. 19

    用户接受测试(UAT)和端到端(E2E)测试是否是同一件事?

  20. 20

    使用jQuery检查某个元素是否是另一个元素中的第一件事

  21. 21

    从一行中获取一件事,然后将其与另一行中的一件事连接起来

  22. 22

    CSS选择器允许一件事,但不允许另一件事?

  23. 23

    使用joi进行条件验证:如果属性值大于4,则执行一件事,否则执行另一件事

  24. 24

    显示器分辨率说一件事,但显示另一件事

  25. 25

    如何打开一件事然后又打开另一件事

  26. 26

    使用 onClick 调用相同的函数适用于一件事而不是另一件事?

  27. 27

    快速排序算法-做同一件事的方法有很多?

  28. 28

    const和constexpr最终会是同一件事吗?

  29. 29

    “ var”和“ variant”是同一件事吗?

热门标签

归档