• ANDROID 单元测试


    android.test.ActivityInstrumentationTestCase2

    一、在Manifest.xml加入

    <uses-library android:name="android.test.runner" />
    <uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
    <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.travelsky.android.test"
    android:label="Test for my app"/>


    二、编写单元测试代码:必须继承自AndroidTestCase

    package com.travelsky.android.test;
       
    import android.test.AndroidTestCase;
    import junit.framework.Assert;
       
    public class MyTest extends AndroidTestCase {
    private static final String Tag="MyTest";
       
    public void testSave() throws Throwable
    {
    int i=4+8;
    Assert.assertEquals(5,i);
    }
       
    public void testSomethingElse() throws Throwable {
    Assert.assertTrue(1 + 1 == 12);
    }
       
    }
    run--> Android JUnit Test

    运行后会,会出现如下警告:   
    Warning: No instrumentation runner found for the launch, using   
    android.test.InstrumentationTestRunner.   
    模拟器不能记住Androidmanifest的配置,在运行时需要重新设置运行配置,如下:   
    1.在工程名字上点击右键,选择properties   
    2.在Run/Debug setting中选择要运行的工程名字,点击右边的Edit,会进入下面的界面,   
    在 instrumentation runner后面的下拉列表中选择:android.test.InstrumentationTestRunner   
    3.重新运行该测试单元,则就不会出现上面的警告了。

    还可以继承android.test.ActivityInstrumentationTestCase2<T>

    添加构造函数
    添加setUp()方法,这个方法在所有的测试之前进行变量和测试环境的初始化。

    @Override
        protected void setUp() throws Exception {
            super.setUp();
            mActivity = this.getActivity();
            mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview);
            resourceString = mActivity.getString(com.example.helloandroid.R.string.hello);
        }
    添加testPreconditions()方法,检查初始化环境,只执行一次
    public void testPreconditions() {
          assertNotNull(mView);
        }
    添加单元测试
    public void testText() {
          assertEquals(resourceString,(String)mView.getText());
        }

    这时候会遇到这样一个问题, 运行的时候提示Test run failed: Test run incomplete. Expected 1 tests, received 0。
    后来找到是构造函数的事,于是把泛型去掉, 然后用不带参数的构造函数,在构造函数里调用super(“com.travelsky.test”, ActivityName.class); 就Ok了。


    REFERENCES:http://www.189works.com/article-19108-1.html

    http://www.cnblogs.com/GnagWang/archive/2011/07/08/2101066.html

    http://www.cnblogs.com/feisky/archive/2012/03/09/1783826.html




    ---------------------------------------------------------------------------------------------------------------------------------
    copyright:http://www.cnblogs.com/anee/
  • 相关阅读:
    转:JMeter5的If Controller操作解析
    .NET Core优秀的应用逻辑分层框架设计
    socket阻塞导致拿不到信息
    2018年开始了,我们还是说说2017吧
    PHP 学习 遇到坑的第一章
    记一次高并发情况,服务器和代码修改过程记录。
    IIS 提高连接的并发数,和CPU的使用率。
    2017年总结
    在 safari 浏览器 onclick 出现延迟的现象
    微信JS-api 注意事项
  • 原文地址:https://www.cnblogs.com/anee/p/2675741.html
Copyright © 2020-2023  润新知