zoukankan      html  css  js  c++  java
  • Android单元测试Junit (一)

    1、在eclips中建立一个Android工程,具体信息如下:

    2、配置单元测试环境,打开AndroidManifest.xml,具体代码如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.milan.junit"
        android:versionCode="1"
        android:versionName="1.0" >
        <uses-sdk
            android:minSdkVersion="16"
            android:targetSdkVersion="19" />
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.milan.junit.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <!--使用单元测试库-->
            <uses-library android:name="android.test.runner"/>
        </application>
        <!-- 声明Android框架和目标测试包-->
        <instrumentation
            android:name="android.test.InstrumentationTestRunner"
            android:targetPackage="com.milan.junit" />
    </manifest>

    说明:

          1、<uses-library android:name="android.test.runner"/> 这句,放在application内部。

          2、android:targetPackage 这个属性,一般为应用程序的包名,必须和xml中manifest节点的package同名。

    3、创建一个包com.milan.service,这个包下面再创建一个类 Person,用于测试的时候调用。

    package com.milan.service;
    public class Person {
        public int getAge(String age){
            return new Integer(age);
        }
    }

    4、在com.milan.junit包下面,建一个PersonTest类,代码如下:

    package com.milan.junit;
    import com.milan.service.Person;
    import android.test.AndroidTestCase;
    public class PersonTest extends AndroidTestCase {
        ///用例1,传入非数字
        public void test01(){
            Person person = new Person();
            person.getAge("milan");
        }
        //用例2,传入数字
        public void test02(){
            Person person = new Person();
            person.getAge("1");
        }
    }

     5、选中PersonTest.java,右键选择Run As 选择Android Junit Test 运行单元测试,如图:

    从上图可以看到,test01的测试结果为失败。失败原因为:java.lang.NumberFormatException: Invalid int: "milan",

    test02的测试结果为通过。

    如果没有Junit运行结果,可以在eclips的Window菜单下,选择Show View--Other--Java--Junit 中打开。

    6、运行单个测试用例

    eclips的Window菜单下,选择Show View--Other--General--Outline打开大纲视图,右键测试用例,即可运行单个测试用例。如图:

    同理,如果需要执行整个项目的测试用例,可选中整个项目,用Android Junit Test运行即可。

    7、断言

    当我们获得程序的运行结果,我们希望Junit能够自动判断 将实际结果和期望结果是否一致。这个时候我们就可以用到Junit自带的断言。

    修改PersonTest类,为以下代码:

    package com.milan.junit;
    import com.milan.service.Person;
    import android.test.AndroidTestCase;
    public class PersonTest extends AndroidTestCase {
        ///用例1,传入非数字
        public void test01(){
            Person person = new Person();
            int i= person.getAge("milan");
            assertEquals(1, i);
        }
        //用例2,传入数字,断言有message
        public void test02(){
            Person person = new Person();
            int i= person.getAge("1");
            assertEquals("传入数字",2,i);
        }
        //用例2,传入数字,断言无message
        public void test03(){
            Person person = new Person();
            int i= person.getAge("1");
            assertEquals(1,i);
        }
    }

    然后运行结果为:

    如果传入了message,一旦用例不通过,会在右边的错误详细里,列出message。

    8、其他断言

    JUnit提供丰富的断言,来满足我们不同的比对需求。按住Ctrl键,点击代码中的assertEquals,可以看到Assert类里面多支持的断言函数的参数类型:

    大家有空可以多试试。这里就不一一讲解了。

    其他信息

    如出现Test run failed:Unable to find instrumentation target package错误

    是因为 android:targetPackage="com.milan.junit" 必须和

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.milan.junit"
    package相同的包名

  • 相关阅读:
    vscode maven
    clojure + sumblime text SublimeREPL
    .zsh_history
    springboot-自动装配
    任务调度-Quartz
    springcloud alibaba
    canal与kafka的结合使用
    centos7安装Zookeeper
    centos7安装kafka
    vmware+centos7 设置静态ip
  • 原文地址:https://www.cnblogs.com/milanmi/p/4399588.html
Copyright © 2011-2022 走看看