TestCase
junit.framework.TestCase
测试与Android环境无关的接口,可以继承自此类,例如对纯粹的日期格式转换等接口的测试。这种通过接口测试通常用于一个工具类的功能测试。
AndroidTestCase
android.test.InstrumentationTestCase
测试某个Activity类中的函数,可以继承自此类。使用此父类时需要编写启动Activity的代码。
我们可以看到,public class HelloTest extends InstrumentationTestCase {
Hello mActivityTested;
public HelloTest(){
}
@Override
protected void setUp() throws Exception {
Intent intent =new Intent();
intent.setClassName("com.xmobileapp.hello", Hello.class.getName());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mActivityTested = (Hello) getInstrumentation().startActivitySync(intent);
}
此例中所及策划给你的父类就是InstrumentationTestCase。继承InstrumentationTestCase测试类的特点是需要将被测试项实例化。
Hello mActivityTested;
和
mActivityTested=(Hello)getInstrumentation().startActivitySync(intent);
实例化了被测试项Hello
ActivityInstrumentationTestCase
android.test.ActivityInstrumentationTestCase
使用此类父类是无需编写启动Activity的代码,只需向父类构造函数传递被启动Activity的包名和class对象。例子:
public class TestApp extends ActivityInstrumentationTestCase2<AddUT> {
public TestApp()
{
super("com.xmobileapp", AddUT.class);
}
public void testSum()
{
assertEquals(5, getActivity().add(2, 3));
}
}
就是继承了父类ActivityInstumentationTestCase。继承ActivityInstrumentationTestCase测试类的特点是不需要将被测试项实例化。如:
public void testSum()
{
assertEquals(5, getActivity().add(2, 3));
}
}
直接调用了getActivity()函数,而不是像继承了InstrumentationTestCase的上个例子中需要将Hello被测类实例化。
测试中常用的方法
AndroidTestCase.getContext():
此函数的功能为得到Android系统的上下文对象,通过它可以取得contentResolver等对象。
ActivityInstrumentationTestCase.getActivity()
此函数的功能为得到被测Activity对象
assertTrue(String message,boolean condition)
声明状态是True
assertFalse(String message,boolean condition)
声明状态是False
assertEquals(String message,T expected,T expected)
声明两个对象相等
assertNotNull(String message,Object object)
声明对象不为空
assertNull(String message,Object object)
声明对象为空
fall(String message)
测试失败并附带一条消息