MVP アーキテクチャに切り替えて、テストしようとしています。プレゼンターの構成方法について質問があります。
public class Presenter
{
public void onResume()
{
doA();
doB();
doC();
}
protected void doA() {};
protected void doB() {};
protected void doC() {};
}
public class MyScreen implements MyScreenView
{
private Presenter presenter;
public MyScreen()
{
presenter = new Presenter(this);
}
public OnResume()
{
presenter.OnResume();
}
}
上記のコードでは、ビューが再開されると、ビューはプレゼンターの OnResume() を呼び出すだけです。プレゼンターは、doA()、doB()、および doC() の 3 つのメソッドを内部的に呼び出して、必要な処理を実行します。
または、次のようにビューで doA()、doB()、および doC() を直接呼び出すこともできます。
public class Presenter
{
public void doA() {};
public void doB() {};
public void doC() {};
}
public class MyScreen implements MyScreenView
{
private Presenter presenter;
public MyScreen()
{
presenter = new Presenter(this);
}
public OnResume()
{
presenter.doA();
presenter.doB();
presenter.doC();
}
}
私の質問は、2 番目のソリューションをテストする方が簡単だということです。プレゼンターは、個別の責任を持つ 3 つの個別のパブリック メソッドにきれいに分割されているため、プレゼンター用の 1 つのモノリシック テストではなく、doA、doB、および doC のテストを個別に作成できます。ソリューション 1 の onResume() メソッド。
最初の解決策では、onResume() のテストを作成する必要があります。これは、これら 3 つのメソッドを呼び出す責任があります。これは、他のプライベート関数を呼び出す関数よりも、個々の責任の小さな関数をテストする方がはるかに簡単であるため、テストが難しいことを意味します。ただし、2 番目のソリューションは、プレゼンターが何をしているかを知っているようで、最初のソリューションの onResume() メソッドでプレゼンターに実行させていないだけなので、良い MVP とは思えません。