Skip to content

Instantly share code, notes, and snippets.

@jinqian
Last active September 17, 2015 15:19
Show Gist options
  • Save jinqian/09e216aed7c1d556a0a6 to your computer and use it in GitHub Desktop.
Save jinqian/09e216aed7c1d556a0a6 to your computer and use it in GitHub Desktop.
package your.package.name;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
import org.junit.runners.model.InitializationError;
import org.robolectric.AndroidManifest;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.res.Fs;
import your.package.BuildConfig;
public class RobolectricGradleTestRunner extends RobolectricTestRunner {
public RobolectricGradleTestRunner(final Class<?> testClass) throws InitializationError {
super(testClass);
}
public static void startFragment(Fragment fragment) {
FragmentActivity activity = Robolectric.buildActivity(ActionBarActivity.class)
.create()
.start()
.resume()
.get();
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(fragment, null);
fragmentTransaction.commit();
}
@Override
protected AndroidManifest getAppManifest(Config config) {
String buildVariant = (BuildConfig.FLAVOR.isEmpty() ? "" : BuildConfig.FLAVOR + "/") + BuildConfig.BUILD_TYPE;
String intermediatesPath = BuildConfig.class.getResource("").toString().replace("file:", "");
intermediatesPath = intermediatesPath.substring(0, intermediatesPath.indexOf("/classes"));
String manifestPath = intermediatesPath + "/manifests/full/" + buildVariant + "/AndroidManifest.xml";
String resPath = intermediatesPath + "/res/" + buildVariant;
String assetPath = intermediatesPath + "/assets/" + buildVariant;
AndroidManifest androidManifest = createAppManifest(Fs.fileFromPath(manifestPath),
Fs.fileFromPath(resPath),
Fs.fileFromPath(assetPath));
androidManifest.setPackageName("your.package.name");
return androidManifest;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment