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