簡體   English   中英

Robolectric 是單元測試還是集成測試?

[英]Robolectric is unit or integration test?

我知道在 Robolectric 官方網站上說這個框架是用於單元測試的,但是在所有示例 robolectric 上都用於測試視圖......例如:Robolectric 可以用來檢查 textview X 的文本是否為“狗”,可以檢查按鈕是否可點擊......但這不是單元測試......它是集成測試,我也可以用濃縮咖啡來做到這一點......

如果 robolectric 真的是單元測試,我可以用它來測試視圖模型、存儲庫、擴展嗎?

如果是用於單元測試,您能給我一個僅使用 Robolectric(沒有 Mockito)顯示視圖模型測試的示例嗎?

幾年前,我在我寫的這篇舊帖子中報告了他們網站的一些解釋

Robolectric 的另一種方法是使用 Mockito 等模擬框架或模擬 Android SDK。 雖然這是一種有效的方法,但它通常會產生本質上是應用程序代碼的反向實現的測試。 Roboelectric 允許使用更接近黑盒測試的測試風格,使測試更有效地重構並允許測試專注於應用程序的行為而不是 Android 的實現。 如果您願意,您仍然可以將模擬框架與 Robolectric 一起使用。

要理解 Roboelectric 的概念,需要了解什么是Shadows對象,它模仿了 Android 類。 當您需要測試 Android 實現時,可能很難執行 Junit 測試,因為有很多 Android 組件: Views、Intent、Bundle、Fragments僅舉出其中一些 Roboelectric 可以測試的名稱。 此外,如果您的代碼緊密耦合,則可能難以運行 UI 測試,這些測試需要通過模擬器運行並且速度非常慢,盡管經常需要。 Junit 測試要快得多,而且不需要模擬器。 Roboelectric 可幫助您測試特定的 Android 組件,而無需使用模擬器。

您要求的 viewModel 示例實際上是一個通用問題,因為 ViewModel 可能非常不同。 通常一個 viewModel 包含視圖的業務邏輯而不通常引用視圖,所以應該可以用 Mockito 進行測試。 在 Stackoverflow 中我們不就使用哪個框架發表意見,所以我不會做任何判斷。 因此,無論 Roboelectric 示例應該闡明如何在 viewModel 或任何需要的地方使用它,視圖可能是一個更好的地方。 請注意 Roboelectric 作為每個框架都有優點和缺點,但我們不能在 StackOverflow 上討論這一點,互聯網研究和你的玩具項目會為你做。

此外,當您進行 Junit 測試時,您會進行隔離測試,因此該類具有相對價值,因為有業務邏輯可以測試您的SUT系統。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM