美文网首页
Android测试之JUnit篇

Android测试之JUnit篇

作者: 卖梦想的男孩 | 来源:发表于2017-02-21 14:17 被阅读101次

    在应用开发过程中,业务逻辑的抽象部分、核心算法等需要严格把关,测试在这一环节也显得尤为重要。Android的开发语言为Java,所以最简单的方便的测试就是利用JUnit来进行测试。

    JUnit在Android中有两种书写方式,分别是本地和真机测试。下面以简单的计算功能做演示。

    package cn.kerison.playground.util;
    /**
     * Created by k on 2017/2/21.
     */
    public class Calc {
        public double add(double a,double b){
            return a+b;
        }
        public double multi(double a,double b){
            return a*b;
        }
    }
    
    1. 本地测试:
      和传统的java测试一致,只需要添加JUnit库,写好测试用例即可。
      添加依赖:
    dependencies{
        testCompile 'junit:junit:4.12'
    }
    

    AS中提供了方便的测试操作,直接右键即可选择测试的方法。
    右键 -> GoTo -> Test (cmd+shift+T )

    测试配置
    不同的AS版本界面可能略微不一样,配置都是类似的,需要注意的是选在位置的时候,本地测试的类需要放在test目录下,否则可能会提示找不到相关类。
    @RunWith //指定运行环境
    @Before//每次测试前都会调该方法初始化
    @After //每次测试后都会调该方法释放
    @Test //被测试的方法
    package cn.kerison.playground.util;
    import junit.framework.Assert;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.junit.runners.BlockJUnit4ClassRunner;
    /**
     * @deprecated Included for backwards compatibility with JUnit 4.4. Will be
     *             removed in the next major release. Please use
     *             {@link BlockJUnit4ClassRunner} in place of {@link JUnit4ClassRunner}.
     */
    //原JUnit4ClassRunner废弃
    @RunWith(BlockJUnit4ClassRunner.class)
    public class CalcTest {
        private Calc mCalc;
        @Before
        public void setUp() throws Exception {
            System.out.println("setUp");
            mCalc = new Calc();
        
        @After
        public void tearDown() throws Exception {
            System.out.println("tearDown");
            mCalc = null;
        }
    
        @Test
        public void add() throws Exception {
            Assert.assertEquals("call add ",6.0,mCalc.add(2, 4));
        }
    
        @Test
        public void multi() throws Exception {
            Assert.assertEquals("call multi ",8.0,mCalc.multi(2, 4));
        }
    }
    
    1. 真机测试
      真机测试略微麻烦些,不过能更真实的反应运行时的环境,而不是本地的开发环境,Google也是推荐使用的。真机测试最新采用的库是AndroidJUnitRunner,实现也是JUnit,支持JUnit3和JUnit4,替代原来的InstrumentationTestRunner ,后者支持JUnit3.
    • 指定Runner的运行器
    android{
    defaultConfig{
      testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    }
    
    • 添加依赖
    androidTestCompile ('com.android.support.test:runner:0.5', {
      //排除冲突的库
            exclude group: 'com.android.support', module: 'support-annotations'
        })
    

    测试类的创建书写方式同JUnit,只是需要注意点是真机测试的类需要放在androidTest目录下,在运行测试类的时候,会像运行应用一样安装测试,日志输出在Android Monitor。
    如果涉及到Android本身的一些测试,需要替换BlockJUnit4ClassRunner为AndroidJUnit4
    AndroidJUnit4是BlockJUnit4ClassRunner的子类,做了部分增强。结合UI测试框架,可以做更多操作。

    另外还可以配合注解做更详细的设计

    • @RequiresDevice:强制使用真机而不是模拟器
    • @SdkSupress:强制使用api版本 :如@SDKSupress(minSdkVersion=19)。
    • @SmallTest、@MediumTest 和 @LargeTest:指定测试的运行时长以及运行频率。

    扩展传送门

    相关文章

      网友评论

          本文标题:Android测试之JUnit篇

          本文链接:https://www.haomeiwen.com/subject/qcbywttx.html