嗨我在BuddyBuild上构建测试时遇到问题。
我要测试的方法:
public static String convertTimeToDepartureDate(long timeInMillis) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeInMillis);
SimpleDateFormat format = new SimpleDateFormat("d MMM HH:mm", Locale.ENGLISH);
return format.format(calendar.getTime());
}
这是我的测试:
@Test
public void timeToDepartureTest() throws Exception {
String dateDeparture = TimeUtils.convertTimeToDepartureDate(timeMillis);
assertEquals("Date have wrong format or numbers!", "7 Oct 16:45", dateDeparture);
}
这是我在互联网上找到的一种解决方案,但不起作用:
@Test
public void timeToDepartureTest() throws Exception {
synchronized (Calendar.getInstance()) {
String dateDeparture = TimeUtils.convertTimeToDepartureDate(timeMillis);
assertEquals("Date have wrong format or numbers!", "7 Oct 16:45", dateDeparture);
}
}
在我们的机器上工作正常。所有测试都通过了但在BB上并没有奏效。 这是来自BB控制台的日志:
...
:app:testDebugUnitTest
com.package.dao.TimeUtilsTest > timeToDepartureTest FAILED
junit.framework.ComparisonFailure at TimeUtilsTest.java:46
com.package.dao.TimeUtilsTest > timeToMinutesAndHoursTest FAILED
junit.framework.ComparisonFailure at TimeUtilsTest.java:52
com.package.dao.TimeUtilsTest > timeToSpecificFormatTest FAILED
junit.framework.ComparisonFailure at TimeUtilsTest.java:70
com.package.dao.TimeUtilsTest > timeToOpeningHoursTest FAILED
junit.framework.ComparisonFailure at TimeUtilsTest.java:64
12 tests completed, 4 failed
...
我觉得BB很好用。我们的测试中存在问题。你能想到如何解决它吗? 谢谢你。
答案 0 :(得分:0)
问题出在时区。 BuddyBuild使用PST和本地机器/代码使用默认EST或其他。 解决方案是为每个时间值定义的时区。
代表SimpleDateFormat
:
//...
SimpleDateFormat format = new SimpleDateFormat("d MMM HH:mm", Locale.getDefault());
format.setTimeZone(TimeZone.getTimeZone("UTC"));
//...
和Calendar
:
//...
Calendar cal = Calendar.getInstance();
cal.setTime(dateConverted);
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
//...
现在测试将通过。