gpt4 book ai didi

android - Robolectric 是单元测试还是集成测试?

转载 作者:行者123 更新时间:2023-12-03 08:49:34 26 4
gpt4 key购买 nike

我知道 Robolectric 官方网站上说这个框架用于单元测试,但在所有示例 robolectric 上都用于测试 View ...例如:Robolectric 可用于检查 textview X 的文本是否为“dog” ”,可以检查按钮是否可点击...但这不是单元测试...它是集成测试,我也可以用 espresso 做到这一点...

如果 robolectric 真的是单元测试,我可以用它来测试 View 模型、存储库、扩展吗?

如果是用于单元测试,您能给我一个仅使用 Robolectric(无 Mockito)显示 View 模型测试的示例吗?

最佳答案

几年前,我从他们的网站上报告了一些解释在这个旧的post我写的

An alternate approach to Robolectric is to use mock frameworks such as Mockito or to mock out the Android SDK. While this is a valid approach, it often yields tests that are essentially reverse implementations of the application code. Roboelectric allows a test style that is closer to black box testing, making the tests more effective for refactoring and allowing the tests to focus on the behavior of the application instead of the implementation of Android. You can still use a mocking framework along with Robolectric if you like.

要理解 Roboelectric 的概念,需要了解什么是模仿 Android 类的 Shadows 对象。当您需要测试 Android 实现时,执行 Junit 测试可能会很困难,因为有很多 Android 组件:Views、Intent、Bundle、Fragments 仅举一些 Roboelectric 可以测试的组件。此外,如果您的代码紧密耦合,则可能很难运行 UI 测试,这些测试需要通过模拟器运行,并且速度相当慢,尽管经常需要。 Junit 测试速度更快,并且不需要模拟器。 Roboelectric 可帮助您测试特定的 Android 组件,而无需使用模拟器。

您要求的 viewModel 示例实际上是一个通用问题,因为 ViewModel 可能非常不同。通常,viewModel 包含 View 的业务逻辑通常不引用 View ,因此应该可以使用 Mockito 进行测试。在 Stackoverflow 中我们不会对使用哪个框架发表意见,所以我不会做出任何判断。因此,任何 Roboelectric 示例都应该阐明如何在 viewModel 或任何需要的地方使用它, View 可能是一个更好的地方。请注意,Roboelectric 作为每个框架都有优点和缺点,但我们无法在 StackOverflow 上讨论这一点,互联网上的研究和你的玩具项目将为你做。

此外,当您进行 Junit 测试时,您会进行隔离测试,因此只要有业务逻辑来测试您的 SUT(被测系统),该类就具有相对值(value)。

关于android - Robolectric 是单元测试还是集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59830439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com