Java 获取当前UTC日期时间的单元测试
我有这样一种方法:Java 获取当前UTC日期时间的单元测试,java,unit-testing,junit,Java,Unit Testing,Junit,我有这样一种方法: public Date getCurrentUtcDateTime() { // Return UTC time } 我想用JUnit创建一个单元测试 assertEquals( ?????? 正确的方法是什么 如果我编写单元测试代码来计算UTC当前时间,那就不好了,因为我实际上是在重写整个函数。除此之外,两个日期时间的毫秒数也不相同 如果我只是检查结果不为null,那就不好——结果可能仍然是错误的 我还应该尝试什么?为这个函数编写单元测试的正确方法是什
public Date getCurrentUtcDateTime() {
// Return UTC time
}
我想用JUnit创建一个单元测试
assertEquals( ??????
正确的方法是什么
startTime=getUTCTimeUsingAlternativeMethod();
resultTime=classUnderTest.getCurrentUtcDateTime();
endTime=getUTCTimeUsingAlternativeMethod();
验证时间(startTime,因此我多次遇到这个问题。在很多情况下,都会得到前后时间(如建议的)工作正常。但是,在时间转换为字符串的情况下,或者在需要准确时间才能创建良好测试的情况下,我遇到了问题。因此,我创建了一种控制时间的机制(而不是时空连续体)
我有一个名为的类,它的方法类似于getCurrentTime()
和getCurrentDateTime
。默认行为返回new Date()
然后我有一个JUnit规则,可以用来显式地控制DateSupplier
返回的内容。DateController
规则位于测试库中,因此不应与生产代码一起部署。每次测试后,它将DateSupplier
的行为设置回返回正确当前D的默认行为ate
public Date getCurrentUtcDateTime() {
// Return UTC time
Date date = DateSupplier.getCurrentDate();
}
public class MyTest{
@Rule
public DateController dateController = new DateController();
private Date currentTime;
@Before
public void setup(){
dateController.setCurrentTimeToNow();
currentTime = DateSupplier.getCurrentTime();
}
@Test
public void myTest(){
Date value = getCurrentUtcDateTime();
// verify
Date utcDate = // convert currentTime to UTC
assertThat(value, equalTo(utcDate));
}
}
您想测试什么?如果它与模式匹配?请使用模式。考虑到您要测试的函数应该是return new Date()
,所以它确实值得测试?它不仅仅是new Date(),而是返回UTC。也就是说,我喜欢这种方法。:/1
public Date getCurrentUtcDateTime() {
// Return UTC time
Date date = DateSupplier.getCurrentDate();
}
public class MyTest{
@Rule
public DateController dateController = new DateController();
private Date currentTime;
@Before
public void setup(){
dateController.setCurrentTimeToNow();
currentTime = DateSupplier.getCurrentTime();
}
@Test
public void myTest(){
Date value = getCurrentUtcDateTime();
// verify
Date utcDate = // convert currentTime to UTC
assertThat(value, equalTo(utcDate));
}
}