問題描述
我有一個 Android Clean Architecture 項(xiàng)目用 Kotlin 編寫,包含 3 個模塊:
- 數(shù)據(jù)(Android 庫)
- domaine(Java 庫)
- 演示文稿(Android 應(yīng)用程序)
這 3 個模塊每個都有用 junit 編寫的單元測試.但是對于 Kotlin,默認(rèn)情況下每個類都是 final 的.我很快就遇到了問題:如何使用 mockito 模擬 final 類
現(xiàn)在可以使用 Mockito 2
可以通過 mockito 擴(kuò)展機(jī)制通過創(chuàng)建包含一行的文件 /mockito-extensions/org.mockito.plugins.MockMaker
來完成:
mock-maker-inline
<塊引用>
此解決方案在數(shù)據(jù)模塊(Android 庫)和演示模塊(Android 應(yīng)用程序)但不適用于我的域模塊(Java 庫).
我知道這個問題已經(jīng)被問過了(如何模擬帶有 mockito 的 final 類,模擬對象調(diào)用 final使用 Mockito 類靜態(tài)方法),但我沒有找到我正在尋找的答案.
您可以默認(rèn)使用內(nèi)聯(lián)模擬方法,通過將您的 Gradle 依賴項(xiàng)從普通的 Mockito 依賴項(xiàng)更改:
編譯org.mockito:mockito-core:$mockito_version"
...到以下內(nèi)容:
編譯org.mockito:mockito-inline:$mockito_version"
這樣您就不必依賴使用資源文件夾中的文件"方法來激活內(nèi)聯(lián)模擬,我發(fā)現(xiàn)這種方法有時很不穩(wěn)定.
I have a Android Clean Architecture project write in Kotlin with 3 modules:
- data (Android Library)
- domaine (Java Library)
- presentation (Android Application)
The 3 modules each have unit tests written with junit. But with Kotlin every class is final by default. I quickly had the problem: How to mock a final class with mockito
It's now possible with Mockito 2
It can be done via the mockito extension mechanism by creating the file /mockito-extensions/org.mockito.plugins.MockMaker
containing a single line:
mock-maker-inline
This solution works very well on data module (Android Library) and presentation module (Android Application) but doesn't work on my domaine module (Java Library).
I know that this question has already been asked (How to mock a final class with mockito, Mock objects calling final classes static methods with Mockito), but I didn't find the answer I'm looking for.
You can use the inline mocking method by default, by changing your Gradle dependency from the normal Mockito dependency:
compile "org.mockito:mockito-core:$mockito_version"
... to the following:
compile "org.mockito:mockito-inline:$mockito_version"
This way you won't have to rely on activating inline mocking with the "file in the resources folder" method, which I have found to be flaky sometimes.
這篇關(guān)于如何在 Android 項(xiàng)目的 Java 模塊上使用 Mockito 2 模擬最終類?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!