Как дать значение метки времени в качестве аргумента в Java? - PullRequest
0 голосов
/ 05 октября 2018

Я изучаю модульное тестирование и хочу написать метод тестирования для метода, который преобразует строку в метку времени.Тип возвращаемого значения метода - Timestamp, а параметр - String.Я знаю, что функция возвращает правильное значение при отладке.Например, если введено значение "07.10.2018 08:45:00", возвращаемое значение должно быть 2018-10-07 08:45:00.0 (типа отметка времени).Как передать это значение assertEquals в тестовом методе?Каков правильный формат передачи значения Timestamp в функцию?

Или есть какой-то другой способ его тестирования?

public void test() {
        IDManager  test = new IDManager();

        Timestamp output = test.convertStringToTimestamp("07.10.2018 08:45:00");
        //assertEquals(2018-10-07 08:45:00.0,output );
    }

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я хотел бы привести очень короткий пример OffsetDatetime, который должен работать аналогично.

Важно то, что для юнит-тестов вы достаточно хорошо определяете ожидаемый результат.Итак, вы говорите тесту, что ожидаете, и затем сравниваете его с желаемым результатом и поведением.

Пожалуйста, кратко рассмотрите:

@Test
public void shouldReturnTimestamp() throws Exception {
    //Given
    final String toParse = "2018-10-05T14:49:27.000+02:00";
    final OffsetDateTime expected = OffsetDateTime.of(2018, 10, 05, 14, 49, 27, 0, ZoneOffset.ofHours(2));
    //When
    final OffsetDateTime actual = new OffsetDateTimeConverter().apply(toParse);
    //Then
    assertThat(actual).isEqualTo(expected);
}

class OffsetDateTimeConverter implements Function<String, OffsetDateTime> {

    @Override
    public OffsetDateTime apply(final String s) {
        return OffsetDateTime.parse(s);
    }
}

Это как-то помогает?

0 голосов
/ 05 октября 2018

Вы можете проверить с использованием Time api без операции преобразования string в timestamp.

Ваша строка даты 07.10.2018 08:45:00.

Если вы преобразуете эту строку в значение TimeStamp, используйте этот код;

final Timestamp timestamp = 
        Timestamp.valueOf(LocalDateTime.of(LocalDate.of(2018, 10, 7), LocalTime.of(8, 45, 0)));

А затем сравните две метки времени, одна из которых идет от вашего convertStringToTimestamp метода, а другая timeStamp с предоставленным моим кодом.

Таким образом, конечный код должен быть таким;

IDManager  test = new IDManager();
Timestamp output = test.convertStringToTimestamp("07.10.2018 08:45:00");

final Timestamp timestamp =
        Timestamp.valueOf(LocalDateTime.of(LocalDate.of(2018, 10, 7), LocalTime.of(8, 45, 0)));
Assert.assertEquals("TimeStamps should match!", timestamp, output);
...