Android单元测试之 Robolectric3.0+

xiaoxiao2021-02-28  109

1、添加环境(Android Studio2.3+)

// robolectric testCompile 'org.robolectric:robolectric:3.3' testCompile "org.robolectric:robolectric-annotations:3.3" testCompile 'com.google.inject:guice:3.0' //robolectric针对support-v4的shadows testCompile "org.robolectric:shadows-support-v4:3.1.4"

2、javaTest添加代码(不是androidTest)

@RunWith(MyRobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21, packageName = "com.xxx.xxxservice") public class XXXServiceTest {

}

3、云端Maven项目对象模型

public class MyRobolectricTestRunner extends RobolectricTestRunner { public MyRobolectricTestRunner(Class<?> testClass) throws InitializationError { super(testClass); // 从源码知道MavenDependencyResolver默认以RoboSettings的repositoryUrl和repositoryId为默认值,因此只需要对RoboSetting进行赋值即可 RoboSettings.setMavenRepositoryId("alimaven"); RoboSettings.setMavenRepositoryUrl("http://maven.aliyun.com/nexus/content/groups/public/"); } }

4、测试广播为例

@Test public void onDetected(){

String action = PEOPLE_INFO_BROADCAST; Intent intent = new Intent(action); intent.putExtra("BroadcastTest", "test"); //测试是否注册广播接收者 assertTrue(shadowApplication.hasReceiverForIntent(intent)); //以下测试广播接受者的处理逻辑是否正确 myReceiver.onReceive(RuntimeEnvironment.application,intent); String info = intent.getExtras().getString("BroadcastTest"); assertEquals( "test", info);MyReceiver myReceiver = new MyReceiver();

}

说明:接收广播消息类就不再阐述。

推荐博文:

Android单元测试框架Robolectric3.0介绍

转载请注明原文地址: https://www.6miu.com/read-35508.html

最新回复(0)