Как написать тестовый пример Junit для метода форматирования даты в строку? - PullRequest
0 голосов
/ 04 мая 2020

Является ли это правильным способом написания контрольного примера junit для приведенного ниже метода:

public static String formatDate(Date date) {

        String str = null;

        if(date == null){

            str = new SimpleDateFormat("yyyy MM dd HH:mm:ss").format(new Date());
        }
        else{
            str = new SimpleDateFormat("yyyy MM dd HH:mm:ss").format(date);
        }

        return str;
    }

    @Test
    public void testFormatDate() {
        Date date = new Date();
        String actualDate = DateUtils.formatDate(date);
        System.out.println(actualDate);
        assertEquals(new SimpleDateFormat("yyyy MM dd HH:mm:ss").format(date), actualDate);

    }

Для меня способ установки ожидаемой даты кажется неправильным. что ты говоришь?

1 Ответ

1 голос
/ 04 мая 2020

Я не вижу проблем с вашим тестом. Пока ожидаемый формат даты совпадает с указанным в реализации. Это цель утверждения, которую нужно проверить.

Я бы посоветовал сделать несколько рефакторингов, чтобы они были лучше

public static String formatDate(Date date) {
    Date dateToBeFormatted = date != null ? date : new Date();
    return new SimpleDateFormat("yyyy MM dd HH:mm:ss").format(dateToBeFormatted);
}

/* Assume the below code block in a separate test file  */
@Test
public void testFormatDate() {
    Date date = new Date();
    System.out.println(actualDate);

    String expectedDateFormat = "yyyy MM dd HH:mm:ss";
    String expectedResult = generateExpectedDateWithFormat(expectedDateFormat, date);

    String actualDate = DateUtils.formatDate(date);
    assertEquals(expectedResult, actualDate);
}

private String generateExpectedDateWithFormat(String dateFormat, Date date) {
    return new SimpleDateFormat(dateFormat).format(date)
}
...