如何使用 Mockito 或其他模拟框架来模拟 MainActivity?

问题描述 投票:0回答:1

我需要模拟 MainActivity,因为它是我拥有的单元测试的参数。我尝试过

private val mockMainActivity: MainActivity = mock()
。但是我得到:

Mockito 无法模拟此类:class se.用户名.mmi.onboard.activities.MainActivity.

Java:11 JVM 供应商名称:JetBrains s.r.o.虚拟机 供应商版本:11.0.15+0-b2043.56-8887301 JVM名称: OpenJDK 64 位服务器 VM JVM 版本: 11.0.15+0-b2043.56-8887301 JVM 信息:混合模式操作系统名称:Linux 操作系统版本:6.2.0-31-generic

您看到此免责声明是因为 Mockito 配置为创建 内联模拟。您可以了解内联模拟及其局限性 在 Mockito 类 javadoc 的第 #39 项下。

底层异常:java.lang.IllegalArgumentException:无法 创建类型 org.mockito.exceptions.base.MockitoException: Mockito 无法模拟此类:class se.用户名.mmi.onboard.activities.MainActivity.

如果您不确定为什么会出现此错误,请提出问题 在 GitHub 上。

那么我怎样才能模拟MainActivity呢?

java android unit-testing mockito powermockito
1个回答
0
投票

在单元测试中,您可以创建 MainActivity 的模拟或假实现并将其传递给 SomeClass。这样,您就可以在 SomeClass 中测试逻辑,而不必担心 MainActivity 的复杂性。

@Test 
fun testSomeClass() { 
val mockMainActivity = mock(MainActivity::class.java) 
val someClass = SomeClass(mockMainActivity) // Test the behavior of SomeClass }
© www.soinside.com 2019 - 2024. All rights reserved.