为了账号安全,请及时绑定邮箱和手机立即绑定

如何在java中给出时间戳值作为参数?

如何在java中给出时间戳值作为参数?

qq_花开花谢_0 2021-10-28 14:44:03
我正在学习单元测试,我想为将字符串转换为时间戳的方法编写测试方法。该方法的返回类型为Timestamp,参数为String。我知道该函数在调试时返回正确的值。例如,如果输入是"07.10.2018 08:45:00",则返回的值应该是2018-10-07 08:45:00.0(时间戳类型)。如何在测试方法中将此值传递给 assertEquals?将时间戳值传递给函数的正确格式是什么?或者有没有其他方法可以测试?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 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

你可以用时间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);


查看完整回答
反对 回复 2021-10-28
?
九州编程

TA贡献1785条经验 获得超4个赞

我想给你一个关于 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);

    }

}

它有什么帮助吗?


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 206 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信