について:
例えば、私はほとんどすべてのActivityクラスにCrashlytics、のonCreate 方法でGoogle Analyticsのコードを持っています。 Robolectricは、 がこれらの行に出会うとエラーをスローします。 ShadowActivityはこれらの タイプの問題を解決できますか?
あなたはAnalyticsFacadeのいくつかの並べ替えを実装ファサードを実装内部のライブラリの呼び出しをラップし、すべての実装をカプセル化するクラスを作成し、ちょうどそれらに共通する行動を委任することができます。
public interface Analytics{
void sendEvent(String category, String action, Map<String,String> params);
void log(String msg);
}
public class AnalyticsFacade implements Analytics{
private List<Analytics> analyticsServices;
public AnalyticsFacade()
{
this.analyticsServices = new ArrayList<Analytics>();
}
public void addAnalyticsService(Analytics analytics){
analyticsServices.add(analytics);
}
@Override
public void sendEvent(String category, String action, Map<String, String> params)
{
for(Analytics service: analyticsServices){
service.sendEvent(category,action,params);
}
}
@Override
public void log(String msg)
{
for(Analytics service: analyticsServices){
service.log(msg);
}
}
}
public class GoogleAnalytics implements Analytics{
private Tracker tracker;
public GoogleAnalytics(Tracker tracker)
{
this.tracker = tracker;
}
@Override
public void sendEvent(String category, String action, Map<String, String> params)
{
//Note that this method signature has changed since GA v2 , now you pass a Map and
//it has a builder in order to create it
tracker.send(category,action,params);
}
@Override
public void log(String msg)
{
throw new RuntimeException("Not implemented");
}
}