私は新しい 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
});
}
}