Robolectric单元测试笔记

发表于:2016-5-30 10:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:liucloo    来源:51Testing软件测试网采编

  1、环境搭建(版本3.0)
  Android单元测试需要JUnit框架的支持,Robolectric只是提供了Android代码的运行环境,测试还是需要junit来实现。配置如下:
  testCompile 'junit:junit:4.10'
  testCompile 'org.robolectric:robolectric:3.0'
  然后在Build Variants中的Test Artifact改为Unit Tests。
 
  在Android Studio2.0正式版中没有这个选项,直至忽略掉。
  2、第一次尝试
  在Android studio下面有Test包,新建测试类TestDemoTest.
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class,
sdk = 21,
manifest = "src/main/AndroidManifest.xml",
packageName = "cn.liucl.andoridunittestdemo",
resourceDir = "res")
public class TestDemoTest {
public static final String TAG = TestDemoTest.class.getSimpleName();
private MainActivity mainActivity;
@Before
public void beforeTest() throws Exception {
System.out.println("before");
}
@Test
public void Testing() throws Exception {
System.out.println("Testing()");
}
}
  第1行代码,使用注解的方式引入robolectric。然后看这个类的两个方法,使用before注解的方法,表示在单元测试之前执行,可用于获取Activity或资源文件等;而Test注解的方法表示就是这个测试case。执行之后,你会发现Robolectric cant found resource and AndroidManifest.xml这个错误。这是robolectric没有正确加载manifest文件。其实,Resources也没有被加载。这样就有这个类的第二个注解,也就是Config。在Config里面可以指定SDK版本,资源文件以及清单文件等信息。具体信息可以看他的注解。
  补充:如果还是找不到资源,尝试把AndroidManifest中Application的Theme改成android:theme="@style/Theme.AppCompat"
  注意,第一次运行需要下载sdk需要的组件,可能需要一段时间。如果下载失败,自备梯子。
  
  图为正在下载。
  3、带上Activity
  Robolectric可以创建Activity,可以测试执行点击事件,可以测试生命周期等。
  (1)、创建一个Activity
  Robolectric提供对Activity的操作方法,我们获取一个Activity只需要Robolectric.setupActivity(MainActivity.class);就可以了。
@Before
public void beforeTest() throws Exception {
System.out.println("before");
mainActivity = Robolectric.setupActivity(MainActivity.class);
}
@Test
public void Testing() throws Exception {
Assert.assertNotNull(mainActivity); //断言是否不为空
System.out.println("Testing()");
}
  下面是Robolectric的方法:
  
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号