Есть ли способ в Hamcrest для проверки значения, чтобы быть числом? - PullRequest
0 голосов
/ 25 сентября 2019

Есть ли способ проверить, что ожидаемое значение - это число, использующее Hamcrest, без расширения библиотеки?

Я думаю о чем-то вроде:

    assertThat(expectedValue).isNumber();

Также стоит упомянуть, что ожидаемое значение равно String.

1 Ответ

1 голос
/ 25 сентября 2019

Напишите свой собственный Matcher:

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 (Написание раздела пользовательских совпадений)

...