Java 预期结果是<;0>;而不是约会

Java 预期结果是<;0>;而不是约会,java,date,junit,junit4,Java,Date,Junit,Junit4,我有一个Junit测试,我想写一个约会。单元测试所针对的代码段是一个返回日期的函数。下面是我为代码编写的内容 public void getLatestHistoricalLossDate() { List<Overview> scenarioListTest3 = new ArrayList<Overview>(); String name = "third_scenario-test"; ISO8601DateFormat df =

我有一个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);
}
public void getLatestHistoricalLossDate(){
List scenarioListTest3=新建ArrayList();
String name=“第三种方案测试”;
ISO8601DateFormat=新的ISO8601DateFormat();
日期估计日期=空;
试一试{
estimationDate=df.parse(“2017-01-28322:25:51Z”);
}捕获(解析异常){
e、 printStackTrace();
}
日期creationDate=null;
试一试{
creationDate=df.parse(“2017-02-28322:25:51Z”);
}捕获(解析异常){
e、 printStackTrace();
}
双倍余额=131750000.0;
双重个人审查影响=1000.00;
映射基线=新的HashMap();
基线。投入(“完成”,1000.0);
Map macroAdjustment=newhashmap();
宏观调整。投入(“完成”,2000.0);
Map QualifieveAdjustment=新HashMap();
定性调整投入(“完成”,3000.0);
日期位置日期=空;
试一试{
positionDate=df.parse(“2017-01-28322:25:51Z”);
}捕获(解析异常){
e、 printStackTrace();
}
日期lossHistoryDate=null;
试一试{
lossHistoryDate=df.parse(“2017-01-28322:25:51Z”);
}捕获(解析异常){
e、 printStackTrace();
}
字符串状态=“活动”;
映射周期=新的HashMap();
出售期(“2017年第1季度”);
布尔发布=真;
概览ac=新概览(4,名称,估计日期,创建日期,余额,个人回顾影响,基线,
宏观调整、定性调整、位置日期、损失截止日期、状态、期间、发布);
scenarioListTest3.add(ac);
Mockito.when(scenarioDashboardService.getLatestHistoricalLossDate())。然后返回(lossHistoryDate);
}
@试验
public void testgetLatestHistoricalLossDate()引发异常{
GetLatestHistoricalRossDate();
ISO8601DateFormat=新的ISO8601DateFormat();
Date testLossHistoryDate=scenarioDashboardService.GetLatestHistoricalLosDate();
assertEquals(df.parse(“2017-01-28322:25:51Z”),testLossHistoryDate);
int expectedHistoricalDate=testLossHistoryDate.compareTo(testLossHistoryDate);
Date lossHistoricalDate=df.parse(“2017-01-28T22:25:51Z”);
资产质量(预期历史日期、损失历史日期);
}
当我运行测试时,它指出预期结果是0,而不是列出的日期,我不明白为什么。通常我会将
assertEquals()
语句设置为
assertEquals(1,testLossHistoryDate.size())
.size
不适用于日期。有人知道做同一件事的不同方法吗

    assertNotNull(testLossHistoryDate);
这将检查是否只有一个日期

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


PS
java.util.Date
早已过时。您可以研究一下现代java日期和时间API
java.time
。和你一起工作真是太好了链接:

int expectedHistoricalDate=testLossHistoryDate.compareTo(testLossHistoryDate)-我认为这一行的语义与您认为的不同。如果在Java中比较两个对象,将得到一个负的
int
/
0
/positive
int
iff。您调用的
compareTo(…)
实例小于/等于/大于参数。那么应该用什么替换它呢?我需要能够检查只给出一个日期,而不是更多或更少(因此代码中的
assertEquals
语句)。
assertNotNull(testLossHistoryDate)
?那就意味着只有一个日期。如果没有更好地了解您的要求,我想我们无法确定<代码>资产质量(expectedHistoricalDate、lossHistoricalDate)要求
日期
等于
整数
(通过自动装箱
int
获得)。这永远不会发生。和
testLossHistoryDate.compareTo(testLossHistoryDate)
将始终返回0,因为您正在将
日期与自身进行比较。assertNotNull工作正常!谢谢