1 回答

TA貢獻1818條經驗 獲得超8個贊
ThreeTen-Android Backport 向不支持 Java 8 的 Android 系統提供了 Java SE 8 日期時間類的向后移植。 這個問題的原因是單元測試在 JVM 上運行,而不是 Android開發者所說的:
僅在本地計算機上運行的單元測試。這些測試被編譯為在 Java 虛擬機 (JVM) 上本地運行,以最大限度地減少執行時間。如果您的測試依賴于 Android 框架中的對象,我們建議使用 Robolectric。對于依賴于您自己的依賴項的測試,請使用模擬對象來模擬您的依賴項的行為。
Jake Wharton(ThreeTen-Android Backport 所有者)關于沒有通過 Robolectric 建立資源說:
這是一個 Robolectric 錯誤。要么向他們報告,要么切換到在單元測試中使用普通的 ThreeTenBP?;騼烧?!
因此,我們應該使用原始 ThreeTen Backport 庫來解決這個問題。所以我們應該將它的依賴添加到build.gradle單元測試要使用的文件中。
在 build.gradle 文件中:
dependencies {
implementation 'com.jakewharton.threetenabp:threetenabp:1.1.1'
testImplementation ('org.threeten:threetenbp:1.3.2'){
exclude group:'com.jakewharton.threetenabp', module:'threetenabp'
}
}
在單元測試類中:
@Test
public void advanceByMax1HourWithoutOverflow() {
/*
27 October 2018
1540648800000 -> 1540652400000
22:00 -> 23:00
*/
long currentTimeMillis = 1540648800000L;
long expected = 1540652400000L;
long output = Utils.advanceByMax1HourWithoutOverflow(currentTimeMillis);
assertEquals(expected, output);
}
結果:
添加回答
舉報