如何为 Android App Architecture ViewModel 创建 Android UI 测试?



我一直在使用新的Android应用架构组件。有关测试的文档留下了很多想象力。我已经查看了Android架构组件测试文档的一部分,它非常模糊,如下所述。

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

您如何通过将ViewModel的模拟传递给片段来编写Espresso测试?我还查看了Google提供的示例应用程序,它们也不是很有帮助。

假设这是我的示例片段类。

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 关于提供模拟注入组件有两种主要方法。 第一个是在谷歌示例中实现的,它提供了一个模拟视图模型实现作为不同的风格(例如在你的测试中)。

另一个在我的博客文章中的"测试视图"部分进行了描述,其中 DaggerExampleComponent 由应用程序对象提供,并且您在 espresso 测试运行器中覆盖了应用程序对象,该运行器具有提供假视图模型的应用程序对象。

完整的工作示例在这里

最新更新