gpt4 book ai didi

java - Robolectric 的阴影对象和模拟

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:32:51 25 4
gpt4 key购买 nike

我对移动设备上的单元测试真的很陌生。我想为 Android 移动应用编写 JUnit 测试。我遇到了Robolectric在 IDE 中测试(对我来说,Eclipse)

但是我真的不明白 Robolectric 的 Shadow 对象。我应该用它们来 mock 吗?ShadowActivity等Shadow对象的使用目的是什么?

例如,我在几乎每个 Activity 类的 onCreate 方法中都有 Crashlytics、Google Analytics 代码。 Robolectric 在遇到这些行时会抛出错误。 ShadowActivity 能否解决这些类型的问题?

很抱歉,正如我所说的,我在单元测试方面真的很陌生,Robolectric 文档对初学者没有帮助。

最佳答案

But I really don't understand Shadow objects of Robolectric. Should I use them as mocking? What is the usage purpose of these Shadow objects like ShadowActivity, etc?

阴影有点像模拟或 stub ,但又不完全相同。阴影的存在是为了添加额外的方法,这些方法可以在测试中用于检查底层 Android 对象的状态。例如,许多 Android 对象具有某些值的 setter,但没有 getter。我们可以将 getter 添加到阴影中,并在测试中使用它们对底层对象进行断言。

For example, I have Crashlytics, Google Analytics code in onCreate methods in almost every Activity class. Robolectric throws error when it come across with these lines. Could ShadowActivity solve these types of problems?

可能不会。为此,您应该使用依赖项注入(inject)将虚假版本的 Crashlytics 或 GoogleAnalytics 注入(inject)到您的测试中。

Robolectric 的目的是伪造出足够多的 Android 平台,让您在桌面 JVM 上运行测试 - 而不是模拟 Android。仍然可以使用依赖注入(inject)或模拟等良好的工程实践。

I'm sorry but, as I said I'm really new at Unit-Testing and Robolectric documentations are not helpful for a beginner.

我同意。我们正在努力让它变得更好,但我们还有很长的路要走。

关于java - Robolectric 的阴影对象和模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19997833/

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