1

私は新しい Android アプリ アーキテクチャ コンポーネントに取り組んできました。テストに関するドキュメントは、多くのことを想像に任せています。ドキュメントの一部をテストしている Android アーキテクチャ コンポーネントを見てきましたが、以下のように非常に曖昧でした。

ユーザー インターフェースとインタラクション: Android UI インストルメンテーション テストが必要になるのはこれだけです。UI コードをテストする最良の方法は、Espresso テストを作成することです。フラグメントを作成し、それにモック ViewModel を提供できます。フラグメントは ViewModel とのみ通信するため、この 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
        });        
    }
}  
4

1 に答える 1