Android单元测试

来源:互联网 发布:蜘蛛侠淘宝客 编辑:程序博客网 时间:2024/06/05 04:24

单元测试是针对程序模块来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.单元测试有助于及早发现修改和重构导致的bug,从而确保基础库的稳定和可用.

Java单元测试框架JUnit

使用Android  studio创建应用工程的时候,在src/test下默认生成单元测试目录,同时给出JUnit的简单例子.

public class ExampleUnitTest {    @Test    public void addition_isCorrect() throws Exception {        assertEquals(4, 2 + 2);    }}
使用规则:

单元测试类的命名一般以Test结尾.

单元测试方法需要使用@Test注解标记.

验证单元测试的结果一般使用Assert类中的方法:assertEquals,assertTrue,assertNotEquals,fail等.

在JUnit中,除了@Test,常用的注解还有:

@Before:表示在每个被@Test标记的测试方法调用之前,都要先调用被@标记的方法.

@After:表示在每个被@Test标记的测试方法之后,都要接着调用被After标记的方法.

@BeforeClass:在执行一个测试类的所有测试方法之前,会调用一次这个测试类中被@BeforeClass标志的方法.

@AfterClass:在执行一个测试类的所有测试方法之后,会调用一次这个测试类中被@AfterClass标志的方法.

@Ignore:测试类中某些测试方法可能暂时处于不可测试阶段,那么为了保证不影响整个测试类的正常运行,可以使    用@Ignore标记这些测试方法.

Android单元测试框架Robolectric3.0

Robolectric3.0的设计思想是通过实现一套JVM能够运行的Android代码,从而实现脱离Android环境进行测试.

Robolectric3.0集成:Robolectric3.0依赖于JUnit

    testCompile 'junit:junit:4.12'    testCompile 'org.robolectric:robolectric:3.0'

Robolectric可以方便地对Android中的Activity,fragment,service,broadcastReceiver等组件进行单元测试,还可以测试Activity的生命周期,然后判断控件的取值是否正确.

@RunWith(RobolectricGradleTestRunner.class)@Config(constants = BuildConfig.class)public class RoboTest {    @Test    public void titleIsCorrect() throws Exception {        Activity activity = Robolectric.setupActivity(MainActivity.class);        assertTrue(activity.getTitle().toString().equals("myTest"));    }    @Test    public void testLifecycle() throws Exception {        ActivityController<MainActivity> activityController =                 Robolectric.buildActivity(MainActivity.class).create().start();        Activity activity = activityController.get();        TextView textView = activity.findViewById(R.id.tv);        assertEquals("onCreate",textView.getText().toString() );        activityController.resume();        assertEquals("onResume",textView.getText().toString());    }}

Robolectric不仅支持对UI组件的测试,同时还支持向日志输出,网络请求,数据库等方面的测试.







原创粉丝点击