Как создать Custom matcher в Junit для данного метода - PullRequest
0 голосов
/ 06 ноября 2018

Я новичок в Java & Junit, где я пытаюсь создать собственный класс соответствия, чтобы проверить метод "findValidDate" в классе DateValidationBO. Этот метод используется для изменения дат в формате дд / мм / гггг. Пожалуйста, посоветуйте мне получить ожидаемый результат в следующем формате "java.lang.AssertionError: Ожидаемый: Дата <24/03/2016>, но: фактическая дата была <24/03/2016>"

public class DateValidationBO {
    public String findValidDate(String date) throws ParseException {
        SimpleDateFormat dmy = new SimpleDateFormat("dd/MM/yyyy");
        SimpleDateFormat mdy = new SimpleDateFormat("MM/dd/yyyy");
        Date dat = mdy.parse(date);
        return dmy.format(dat);
    }

Код Junit

public class DateJUnit {
    DateValidationBO dateValidationBO;
    @Before
    public void createObjectForCustomerBO() {
        dateValidationBO = new DateValidationBO();
    }
    @Test
    public void testFindValidDate() throws ParseException {
        SimpleDateFormat sf = new SimpleDateFormat("MM/dd/yyyy");
        String actual = dateValidationBO.findValidDate("12/1990/01");
        assertThat(sf.parse(actual),DateChecker.dateChecker());
    }
}

class DateChecker extends TypeSafeMatcher<Date> {
    @Override
    public void describeTo(Description desc) {
        desc.appendText("Date is");
    }
    @Factory
    public static Matcher<Date> dateChecker(){
        return new DateChecker();
    }
    @Override
    protected boolean matchesSafely(Date d) {
        SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy");
        if(d.equals(sf))
            return true;
        else
        return false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...