首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Architecture创建Android测试?

如何为Architecture创建Android测试?
EN

Stack Overflow用户
提问于 2017-07-05 08:03:04
回答 1查看 1.3K关注 0票数 1

我一直在使用新的Android应用程序架构组件。关于测试的文档给人们留下了很多的想象。我看过android体系结构组件测试文档的一部分,它非常模糊,如下所示。

用户界面&交互:--这将是您唯一需要使用Android工具测试的时候。测试UI代码的最佳方法是创建Espresso测试。--您可以创建该片段并为其提供一个模拟的ViewModel.,因为该片段只与ViewModel对话,模拟它就足以全面测试这个UI。

如何通过将ViewModel的模拟传递给片段来编写Espresso测试?我还看过谷歌提供的示例应用程序,它们也没有多大帮助。

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

代码语言:javascript
复制
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
        });        
    }
}  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-05 08:48:18

AFAIK提供模拟注入组件的主要方法有两种。第一个是在google示例中实现的,它以不同的风格提供模拟视图模型实现(例如,在您的测试中)。

另一个是在“测试视图”部分中描述的在我的博客上,其中DaggerExampleComponent由Application提供,您可以覆盖espresso测试运行程序中的应用程序对象,其中有一个提供假ViewModel。

这里的完整工作示例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44920345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档