我想检查一个字符串是否包含另一个字符串,忽略大小写。基本上,我想这样做:
assertThat(dialogTitle.getText(), containsString(equalToIgnoringCase("Diagram")));
但我找不到 Matcher<String>
需要另一个 Matcher<T>
.是否有不同的方法来实现这一目标?
最佳答案
您可以通过从 org.hamcrest.core
包扩展 SubstringMatcher
来实现您自己的匹配器:
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) 中。
关于java - 我需要 Matcher<String> containsString(Matcher<String> matcher),我做错了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26762099/