java - 预期结果是 <0> 而不是日期

标签 java date junit junit4

我有这个 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 不适用于日期。有人知道做同样事情的不同方法吗?

最佳答案

    assertNotNull(testLossHistoryDate);

这会检查是否只有一个日期。

由于您的方法的返回类型是Date,因此它不能返回多个Date。但是它可以返回 null,即根本没有日期;但如果发生这种情况,上面的断言将被捕获并未能通过测试。

PS java.util.Date 早已过时。您可以研究一下 java.time,这是现代 Java 日期和时间 API。与它一起工作要好得多。 链接: Oracle Tutorial: Date Time .

关于java - 预期结果是 <0> 而不是日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50137470/

相关文章:

java - 如何让ClusterManager识别默认Marker?

java - 捕获异常后请求输入

flutter - 在 Dart 中添加/减去迄今为止的月/年?

javascript - 如何将 JavaScript 日期转换为 MySQL 日期时间格式?

Spring + JUnit + H2 + JPA : Is it possible to drop-create the database for every test?

java - SimpleJdbcInsert 由于自动生成的 id 为空而无法插入(HSQLDB)

java - Spring 的 @Value 在 CamelConfiguration 子类中无法正常工作

java - Hibernate 性能 - 对控制台日志中的许多选择查询

javascript - 从 ISO 日期转换为良好的格式化字符串

java - WebDriver 在网格布局中查找元素