当前位置: 代码迷 >> Android >> 【Android学习札记】使用Android Junit进行测试的注意事项
  详细解决方案

【Android学习札记】使用Android Junit进行测试的注意事项

热度:64   发布时间:2016-05-01 17:32:35.0
【Android学习笔记】使用Android Junit进行测试的注意事项

1.在AndroidManifest.xml中添加两处:

(1)

 <!-- 使用单元测试类库 -->        <uses-library android:name="android.test.runner" />

这个要添加在<application>标签里面,在四大组件前面声明

(2)

    <instrumentation        android:name="android.test.InstrumentationTestRunner"        android:label="niemi"        android:targetPackage="com.gracker.androidtestproject" >    </instrumentation>

这个在<application>标签外面写,注意name和targetPackage是必须的,而且需要注意的是targetPackage的内容是你应用程序的包名,和测试类无关。


2.写测试类

(1)单元测试方法需要声明微public类型

(2)单元测试方法的返回值类型为void

(3)按照JUnit3的规范要求单元测试方法的命名需要以test开头

(4)单元测试的方法必须是无参数的

(5)单元测试方法需要声明向单元测试框架抛出异常

(6)可以在setUp中做测试的初始化工作,比如打开数据库链接或者链接网络等

(7)可以在tearDown中做清理工作,如断开数据库链接或者网络等


3.由于单元测试的用例都是独立的,这就导致每次单元测试时都要实例化测试对象类,这样会代码重复。一个好的方法是在setUp中实例化测试对象。

4.如何测试private方法。使用正常方法测试private方法是不可以的,为了测试吧原方法修改为public也是不可取的,这里可以使用java的反射机制来测试private方法

比如有个private方法如下:

	private int add(int a ,int b)	{		return a+b;	}

测试类可以这么写:

	public void  testAdd() throws Throwable{		Calculator calculator = new Calculator(); //实例化add()方法所在的对象				//获得要测试类的class字节码对象		Class<Calculator> clazzClass = Calculator.class;				//获得要调用的方法		Method method = clazzClass .getDeclaredMethod("add", new Class[]{Integer.TYPE,Integer.TYPE});				//设置可以访问私有方法		method.setAccessible(true);				//通过反射技术条用私有方法		Object resObject =method.invoke(calculator, new Object[]{2,3}); //传入参数2和3		//通过断言判断结果		assertEquals(5, resObject);	}


  相关解决方案