Ожидаемый результат <0> вместо даты - PullRequest
0 голосов
/ 02 мая 2018

У меня есть тест Junit, который я пытаюсь написать для свидания. Кусок кода, для которого предназначен модульный тест, представляет собой функцию, возвращающую дату. Ниже у меня есть то, что я написал для кода.

    public void getLatestHistoricalLossDate() {

    List<Overview> scenarioListTest3 = new ArrayList<Overview>();

    String name = "third_scenario-test";
    ISO8601DateFormat df = new ISO8601DateFormat();
    Date estimationDate = null;
    try {
        estimationDate = df.parse("2017-01-28T22:25:51Z");
    } catch (ParseException e) {
        e.printStackTrace();
    }
    Date creationDate = null;
    try {
        creationDate = df.parse("2017-02-28T22:25:51Z");
    } catch (ParseException e) {
        e.printStackTrace();
    }
    Double balance = 131750000.0;
    Double individualReviewImpairment = 1000.00;
    Map<String, Double> baseline = new HashMap<String, Double>();
    baseline.put("complete", 1000.0);

    Map<String, Double> macroAdjustment = new HashMap<String, Double>();
    macroAdjustment.put("complete", 2000.0);

    Map<String, Double> qualitativeAdjustment = new HashMap<String, Double>();
    qualitativeAdjustment.put("complete", 3000.0);

    Date positionDate = null;
    try {
        positionDate = df.parse("2017-01-28T22:25:51Z");
    } catch (ParseException e) {
        e.printStackTrace();
    }
    Date lossHistoryDate = null;
    try {
        lossHistoryDate = df.parse("2017-01-28T22:25:51Z");
    } catch (ParseException e) {
        e.printStackTrace();
    }

    String status = "active";

    Map<String, Integer> period = new HashMap<String, Integer>();
    period.put("Q1", 2017);

    boolean publish = true;

    Overview ac = new Overview(4, name, estimationDate, creationDate, balance, individualReviewImpairment, baseline,
            macroAdjustment, qualitativeAdjustment, positionDate, lossHistoryDate, status, period, publish);

    scenarioListTest3.add(ac);

    Mockito.when(scenarioDashboardService.getLatestHistoricalLossDate()).thenReturn(lossHistoryDate);
}

@Test
public void testgetLatestHistoricalLossDate() throws Exception {

    getLatestHistoricalLossDate();

    ISO8601DateFormat df = new ISO8601DateFormat();
    Date testLossHistoryDate = scenarioDashboardService.getLatestHistoricalLossDate();
    assertEquals(df.parse("2017-01-28T22:25:51Z"), testLossHistoryDate);
    int expectedHistoricalDate = testLossHistoryDate.compareTo(testLossHistoryDate);
    Date lossHistoricalDate = df.parse("2017-01-28T22:25:51Z");
    assertEquals(expectedHistoricalDate, lossHistoricalDate);
}

Когда я запускаю тест, он сообщает, что ожидаемый результат равен 0 вместо указанной даты, что я не понимаю, почему. Обычно у меня будет assertEquals() оператор как assertEquals(1, testLossHistoryDate.size());, но .size не работает с датами. Кто-нибудь знает другой способ сделать то же самое?

1 Ответ

0 голосов
/ 02 мая 2018
    assertNotNull(testLossHistoryDate);

Это проверяет, что есть ровно одна дата.

Поскольку тип возврата вашего меторда Date, он не может возвращать более одного Date. Однако он может вернуть null, то есть вообще не указывать дату; но вышеприведенное утверждение перехватит, если это произойдет, и провалит тест.

PS java.util.Date давно устарел. Вы можете сами попробовать java.time, современный Java-интерфейс даты и времени. Намного приятнее работать. Ссылка: Обучающая программа по Oracle: Дата и время .

...