单元测试ViewModel Android

时间:2020-02-26 05:32:03

标签: android unit-testing repository tdd viewmodel

我正在执行TDD,我只想验证执行viewmodel方法时是否调用了特定的存储库方法。

class SignInViewModel{
  CustomerRepository customerRepository;
  public void get(){
    customerRepository.getCustomer();
  }
}

2 个答案:

答案 0 :(得分:0)

尝试通过viewmodel构造函数注入存储库实例。 在测试类中模拟存储库实例并验证是否调用get()方法之后,将调用存储库的getCustomer()。

答案 1 :(得分:0)

@Test 
public void get() { 
   signInViewModel.get(); 
   Mockito.verify(customerRepository).getCustomer(); 
}

customerRepository应该是一个模拟。

如果您需要更多详细信息,建议您检查一下

https://github.com/android/architecture-samples/blob/dev-todo-mvvm-live/todoapp/app/src/test/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskViewModelTest.java

在上面的TestSample中使用了ockock验证。您还可以查看如何模拟存储库。如果您要获得NPE,则可能尚未模拟存储库,或者未在测试中创建viewModel。如果您仍然不清楚,我建议您先了解Junit和Mockito的基础知识。