私は、あなたが参照している 2 番目のリポジトリの作成者、Jiahao です。
まず、私のコードをチェックしていただきありがとうございます。私は Android について多くの研究を行っており、私の研究が他の誰かに役立つことをうれしく思います。
次に、Robolectric についての影。このプロジェクトでは Robolectric 3.1 を使用して、Robolectric 3 が MarshMallow とどのように連携するかをテストしています:
https://github.com/jiahaoliuliu/robolectricForMarshmallow
新しい Runtime Permission Manager をテストし、アプリケーションとアクティビティをシャドーイングしました。
シャドウ アクティビティのサンプル コードを次に示します。
import android.content.Context;
import com.jiahaoliuliu.robolectricformarshmallow.controller.MainController;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
/**
* Created by Jiahao on 7/18/16.
*/
@Implements(MainController.class)
public class MainControllerShadow {
public void __constructor__ (Context context) {
// Not do anything
}
@Implementation
public String getTextToDisplay(boolean permissionGranted) {
return "Test";
}
}
https://github.com/jiahaoliuliu/robolectricForMarshmallow/blob/master/app/src/test/java/com/jiahaoliuliu/robolectricformarshmallow/shadow/MainControllerShadow.java
そして、これが単体テストでの使用方法です。
パッケージcom.jiahaoliuliu.robolectricformarshmallow;
import com.jiahaoliuliu.robolectricformarshmallow.shadow.MainControllerShadow;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import static org.junit.Assert.*;
/**
* Created by Jiahao on 6/30/16.
*/
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, manifest = Config.NONE, application = FoolApplication.class,
shadows = { MainControllerShadow.class}, sdk = 18)
public class MainActivityTest {
private MainActivity mMainActivity;
@Before
public void setUp() throws Exception {
mMainActivity = Robolectric.setupActivity(MainActivity.class);
}
@After
public void tearDown() throws Exception {
}
@Test
public void testOnCreate() throws Exception {
// Simple test to know that it works
assertTrue(true);
}
}
https://github.com/jiahaoliuliu/robolectricForMarshmallow/blob/master/app/src/test/java/com/jiahaoliuliu/robolectricformarshmallow/MainActivityTest.java
ご覧のとおり、カスタマイズされた Gradle Test Runner は使用していません。Robolectric のソース コードを確認しました。バージョン 3.0 および 3.1 (最新) では、ヘッダーでシャドウ クラスを指定するだけで十分です。
役立つことを願っています