android - 如何对扩展 AndroidViewModel 的 ViewModel 进行单元测试。构造函数中的应用程序有问题

标签 android unit-testing testing mvvm viewmodel

所以我不得不编写单元测试并且我需要测试我的 ViewModel。

我有一个基本 ViewModel 并且 BaseViewModel 扩展了 AndroidViewModel。我扩展 AndroidViewModel 的原因是我可以使用 Dagger 的上下文。

我的基本 View 模型。

public class BaseViewModel extends AndroidViewModel {

protected @Inject SharedPreferencesHelper sharedPreferencesHelper;

public BaseViewModel(@NonNull Application application) {
    super(application);

    //Only inject sharedPreferences since it is used in almost all of the VMs.
    ((CommissioningApplication) getApplication()).getAppComponent().inject(this);
}

}

本质上,我在单元测试中创建 ViewModel 实例时遇到问题。我尝试了很多事情,但都没有成功。

我考虑过扩展 ViewModel 而不是 AndroidViewModel 并创建一个工厂,将应用程序上下文传递给我的 ViewModel。但最终,每当我尝试创建 ViewModel 的实例时,我都会遇到同样的问题。

有没有人有一个我可以遵循的例子来测试这个?还是我必须进行仪器测试而不是单元测试?

我对测试很陌生,所以也许我做事不正确,任何帮助都会很棒。

谢谢

最佳答案

如前所述here :

Mockito.mock(Application::class.java)

关于android - 如何对扩展 AndroidViewModel 的 ViewModel 进行单元测试。构造函数中的应用程序有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365453/

相关文章:

android - 在 Dagger 2.15 中,我是否需要在每个 Activity 上添加注入(inject)行?

c# - 无法在 Mono 和 Linux 下构建 NUnit 测试项目

unit-testing - 维护阶段的单元测试

unit-testing - 如何测试 Clojure 中抛出的异常?

java - 使用 junit +spring 测试 DAO 文件

android - 如何在android中的按钮中存储元数据?

java - 在电子邮件android的邮件正文中发送图像

android - 工具栏标题不居中

java - 单例和单元测试

angularjs - 使用 "resolve"单元测试 AngularJS 路由