如何在 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 用法,无需 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);
我想给你一个关于 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);
}
}
有什么帮助吗?
我正在学习单元测试,我想为将字符串转换为时间戳的方法编写测试方法。该方法的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 用法,无需 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);
我想给你一个关于 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);
}
}
有什么帮助吗?