我想检查一个字符串是否包含另一个字符串,忽略大小写。基本上,我想这样做:
assertThat(dialogTitle.getText(), containsString(equalToIgnoringCase("Diagram")));但是我找不到一个需要另一个Matcher<String>的Matcher<T>。有什么不同的方法来实现这一点吗?
发布于 2022-09-21 12:49:41
您还可以简单地使用:
org.hamcrest.MatcherAssert.assertThat用法:
assertThat("Actual String", containsStringIgnoringCase("Expected Substring"));发布于 2014-11-06 19:14:13
您可以通过从SubstringMatcher包中扩展org.hamcrest.core来实现自己的匹配程序:
public class StringContainsIgnoringCase extends SubstringMatcher {
public StringContainsIgnoringCase(String substring) {
super(substring);
}
@Override
protected boolean evalSubstringOf(String s) {
return s.toLowerCase().contains(substring.toLowerCase());
}
@Override
protected String relationship() {
return "containing (ignoring case)";
}
public static Matcher<String> containsStringIgnoringCase(String substring) {
return new StringContainsIgnoringCase(substring);
}
}用法:
assertThat(dialogTitle.getText(), StringContainsIgnoringCase.containsStringIgnoringCase("Diagram"));当然,为了提高可读性,您可以进行静态导入,您可以获得:
assertThat(dialogTitle.getText(), containsStringIgnoringCase("Diagram"));您要求的匹配器已经在JavaHamcrest项目的主分支中了,不幸的是,它没有出现在Hamcrest (1.3)的最新版本中。
https://stackoverflow.com/questions/26762099
复制相似问题