如何使用 AssertJ 检查另一个字符串中是否至少包含一个字符串?

How to check if at least one string is contained in another with AssertJ?

我想使用 AssertJ 检查是否至少有一个字符串包含在另一个字符串中。

例如,有:

String actual = "I am a string";
String oneString = "am";
String anotherString = "some string";

目前我可以写:

assertThat(actual.contains(oneString) || actual.contains(anotherString)).isTrue();

所以如果两个条件之一为真,断言就会通过。但是,在失败的情况下,没有详细说明到底是什么失败了。

什么是实现此检查的好方法,并在失败时提供具体细节?

自 AssertJ 3.21.0 起,containsAnyOf 可用:

String actual = "I am a string";
String oneString = "am";
String anotherString = "some string";

assertThat(actual).containsAnyOf(oneString, anotherString);

自 AssertJ 3.12.0 起,satisfiesAnyOf 可用于检查 actual 中是否至少包含一个字符串:

String actual = "I am a string";
String oneString = "am";
String anotherString = "some string";

assertThat(actual).satisfiesAnyOf(s -> assertThat(s).contains(oneString),
                                  s -> assertThat(s).contains(anotherString));