Hamcrest中是否有一种方法可以测试值是否为数字?

时间:2019-09-25 13:36:11

标签: java junit hamcrest

是否可以使用Hamcrest在不扩展库的情况下测试期望值是否为数字?

我在想类似的东西:

    assertThat(expectedValue).isNumber();

此外,值得一提的是,ExpectedValue是String

1 个答案:

答案 0 :(得分:1)

编写自己的匹配器:

import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;

public class IsLong extends TypeSafeMatcher<String> {

    @Override
    protected boolean matchesSafely(String s) {
        try {
            Long.parseLong(s); // Or the number type you need
            return true;
        } catch (NumberFormatException nfe) {
            return false;
        }
    }

    @Override
    public void describeTo(Description description) {
        description.appendText("is long");
    }

    public static Matcher<String> isLong() {
        return new IsLong();
    }
}

所以您的代码看起来像

assertThat(expectedValue, isLong());

更多信息,请访问http://hamcrest.org/JavaHamcrest/tutorial(“编写自定义匹配项”部分)