首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要Matcher<String> containsString(Matcher<String> matcher),我做错什么了吗?

我需要Matcher<String> containsString(Matcher<String> matcher),我做错什么了吗?
EN

Stack Overflow用户
提问于 2014-11-05 16:24:34
回答 2查看 1.8K关注 0票数 1

我想检查一个字符串是否包含另一个字符串,忽略大小写。基本上,我想这样做:

代码语言:javascript
复制
assertThat(dialogTitle.getText(), containsString(equalToIgnoringCase("Diagram")));

但是我找不到一个需要另一个Matcher<String>Matcher<T>。有什么不同的方法来实现这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-21 12:49:41

您还可以简单地使用:

代码语言:javascript
复制
org.hamcrest.MatcherAssert.assertThat

用法:

代码语言:javascript
复制
assertThat("Actual String", containsStringIgnoringCase("Expected Substring"));
票数 1
EN

Stack Overflow用户

发布于 2014-11-06 19:14:13

您可以通过从SubstringMatcher包中扩展org.hamcrest.core来实现自己的匹配程序:

代码语言:javascript
复制
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);
    }

}

用法:

代码语言:javascript
复制
assertThat(dialogTitle.getText(), StringContainsIgnoringCase.containsStringIgnoringCase("Diagram"));

当然,为了提高可读性,您可以进行静态导入,您可以获得:

代码语言:javascript
复制
assertThat(dialogTitle.getText(), containsStringIgnoringCase("Diagram"));

您要求的匹配器已经在JavaHamcrest项目的主分支中了,不幸的是,它没有出现在Hamcrest (1.3)的最新版本中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26762099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档