测试思路
- 创建模拟依赖:使用如 Mockito 等框架创建被测试 ViewModel 所依赖的对象的模拟实例。
- 配置依赖注入环境:在测试环境中,通过 Dagger 或手动方式配置依赖注入,将模拟依赖注入到 ViewModel 中。
- 编写测试用例:针对 ViewModel 的各个方法,编写相应的测试用例,验证其功能的正确性。
关键代码片段
配置依赖注入环境
- 使用 Dagger 模块提供模拟依赖
@Module
class TestAppModule {
@Provides
@Singleton
fun provideMockDependency(): MockDependency {
return Mockito.mock(MockDependency::class.java)
}
}
- 创建测试组件
@Component(modules = [TestAppModule::class])
interface TestAppComponent : AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): TestAppComponent
}
}
- 在测试中使用测试组件
class MyViewModelTest {
private lateinit var viewModel: MyViewModel
private lateinit var mockDependency: MockDependency
@Before
fun setup() {
val app = InstrumentationRegistry.getInstrumentation().targetContext.applicationContext as MyApplication
val component = DaggerTestAppComponent.builder()
.application(app)
.build()
mockDependency = component.provideMockDependency()
viewModel = MyViewModel(mockDependency)
}
}
编写测试用例
@Test
fun testViewModelMethod() {
// 定义预期行为
Mockito.`when`(mockDependency.someMethod()).thenReturn("expected result")
// 调用 ViewModel 方法
val result = viewModel.someViewModelMethod()
// 验证结果
assertEquals("expected result", result)
}