【问题标题】:BuddyBuild tests fail, but on local works fineBuddyBuild 测试失败,但在本地工作正常
【发布时间】:2017-04-27 14:43:35
【问题描述】:

您好,我对在 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 工作正常。我们的测试有问题。你能知道如何解决它吗? 谢谢你。

【问题讨论】:

  • 这里也一样。我们已经询问了 Buddybuild 支持团队,让我们看看能否尽快找到合适的解决方案。
  • 在 iOS 和 BB 上也看到了同样的情况。也向他们寻求帮助。
  • 让我知道他们是如何回答的。

标签: android unit-testing build


【解决方案1】:

问题出在时区。 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"));
//...

现在测试将通过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 2016-10-07
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多