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

How to give a timestamp value as an argument in java?

我正在学习单元测试,我想为将字符串转换为时间戳的方法编写测试方法。该方法的return类型为Timestamp,参数为String。当我调试它时,我知道函数 return 是正确的值。例如,如果输入是 "07.10.2018 08:45:00",那么值 returned 应该是 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 );
    }

您可以检查 Time api 用法,无需 stringtimestamp 转换操作。

您的日期字符串是 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);

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

有什么帮助吗?