我想检查字符串是否包含另一个字符串,忽略大小写。基本上,我想这样做:
assertThat(dialogTitle.getText(), containsString(equalToIgnoringCase("Diagram")));
但我找不到另一个Matcher<String>
的{{1}}。有没有不同的方法来实现这个目标?
答案 0 :(得分:4)
您可以通过从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"));
你要求的匹配器已经在master branch of the JavaHamcrest project,不幸的是它不在Hamcrest(1.3)的最新版本中。