我是您所指的第二个存储库的创建者佳豪。
首先感谢您检查我的代码。我对 Android 做了很多研究,我很高兴我的研究对其他人有用。
然后,关于 Robolectric 的影子。我在这个项目中使用 Robolectric 3.1,来测试 Robolectric 3 如何与 MarshMallow 一起工作:
https ://github.com/jiahaoliuliu/robolectricForMarshmallow
我一直在测试新的运行时权限管理器,以及影子应用程序和活动。
这是阴影活动的示例代码:
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(最新)版本,只需在标题中指定影子类就足够了。
我希望它有帮助