Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为Android应用程序架构视图模型创建Android UI测试?_Android_Unit Testing_Android Fragments_Dagger 2_Android Architecture Components - Fatal编程技术网

如何为Android应用程序架构视图模型创建Android UI测试?

如何为Android应用程序架构视图模型创建Android UI测试?,android,unit-testing,android-fragments,dagger-2,android-architecture-components,Android,Unit Testing,Android Fragments,Dagger 2,Android Architecture Components,我一直在使用新的Android应用程序架构组件。关于测试的文档给我们留下了很多想象空间。我已经看了部分文件,内容非常模糊,如下所示 用户界面和交互:这将是您唯一一次需要Android UI检测测试。测试UI代码的最佳方法是创建一个浓缩咖啡测试您可以创建片段并为其提供一个模拟ViewModel。由于片段只与ViewModel对话,模拟它就足以完全测试此UI 如何通过向片段传递ViewModel的模拟来编写浓缩咖啡测试?我也看过谷歌提供的示例应用程序,它们也不是很有用 假设这是我的示例片段类 pub

我一直在使用新的Android应用程序架构组件。关于测试的文档给我们留下了很多想象空间。我已经看了部分文件,内容非常模糊,如下所示

用户界面和交互:这将是您唯一一次需要Android UI检测测试。测试UI代码的最佳方法是创建一个浓缩咖啡测试您可以创建片段并为其提供一个模拟ViewModel。由于片段只与ViewModel对话,模拟它就足以完全测试此UI

如何通过向片段传递ViewModel的模拟来编写浓缩咖啡测试?我也看过谷歌提供的示例应用程序,它们也不是很有用

假设这是我的示例片段类

public class ExampleFragment extends LifecycleFragment {
    private ExampleViewModel mViewModel;
    @Inject ExampleViewModelFactory mViewModelFactory;

    public ExampleFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {        
        return inflater.inflate(R.layout.fragment_example, container, false);  
    }

    @Override
    public void onActivityCreated(@Nullable final Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    ExampleComponent component = DaggerExampleComponent.builder().build();
    component.inject(this);
    mViewModel = ViewModelProviders.of(this, mViewModelFactory).get(ExampleViewModel.class);
    mViewModel.getExampleString().observe(this, exampleString -> {
       //Update UI
        });        
    }
}  

关于提供模拟注入组件,AFAIK有两种主要方法。 第一个是在中实现的,它将提供一个不同风格的mock viewmodel实现(例如在测试中)

另一个在“测试视图”部分中进行了描述,其中DaggerExampleComponent由应用程序对象提供,您在espresso测试运行程序中重写应用程序对象,该应用程序对象提供假ViewModel