重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果你编写完Android应用软件,要进行一个测试,可以学习这个方法,具体内容如下所示:
为乌审等地区用户提供了全套网页设计制作服务,及乌审网站建设行业解决方案。主营业务为成都网站设计、做网站、乌审网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
首先搭建测试环境:
下载安装Eclipse ADT插件
导入或创建我们想要测试的Android应用项目。
生成一个对应于应用程序项目测试的测试项目。为导入项目生成一个测试项目: a.在项目浏览器里,右击我们的应用项目,然后选择Android Tools > New Test Project b.在新建Android测试项目面板,为我们的测试项目设置合适的参数,然后点击Finish
上面环境搭建好后可以进入创建与执行测试用例:
Activity测试都是通过结构化的方式编写的。请务必把测试代码放在一个单独的包内,从而与被测试的代码分开。
按照惯例,测试包的名称应该遵循与应用包名相同的命名方式,在应用包名后接“.tests”。在创建的测试包中,为我们的测试用例添加Java类。按照惯例,测试用例名称也应遵循要测试的Java或Android的类相同的名称,并增加后缀“Test”。
要在Eclipse中创建一个新的测试用例可遵循如下步骤:
a. 在Package Explorer中,右键点击待测试工程的src/文件夹,New > Package。
b. 设置文件夹名称<你的包名称>.tests
(比如, com.example.android.testingfun.tests
)并点击Finish。
c. 右键点击创建的测试包,并选择New > Calss。
d. 设置文件名称<你的Activity名称>Test
(比如, MyFirstTestActivityTest
),然后点击Finish。
测试数据集包含运行测试前必须生成的一些对象。要建立测试数据集,可以在我们的测试中覆写setUp()和tearDown()方法。测试会在运行任何其它测试方法之前自动执行setUp()方法。我们可以用这些方法使得被测试代码与测试初始化和清理是分开的。
在你的Eclipse中建立测试数据集:
1 . 在 Package Explorer中双击测试打开之前编写的测试用例,然后修改测试用例使它继承ActivityTestCase的子类。比如:
public class MyFirstTestActivityTest extends ActivityInstrumentationTestCase2{
2 . 下一步,给测试用例添加构造函数和setUp()方法,并为我们想测试的Activity添加变量声明。比如:
public class MyFirstTestActivityTest extends ActivityInstrumentationTestCase2{ private MyFirstTestActivity mFirstTestActivity; private TextView mFirstTestText; public MyFirstTestActivityTest() { super(MyFirstTestActivity.class); } @Override protected void setUp() throws Exception { super.setUp(); mFirstTestActivity = getActivity(); mFirstTestText = (TextView) mFirstTestActivity .findViewById(R.id.my_first_test_text_view); } }
构造函数是由测试用的Runner调用,用于初始化测试类的,而setUp()方法是由测试Runner在其他测试方法开始前运行的。
通常在setUp()
方法中,我们应该:
为setUp()
调用父类构造函数,这是JUnit要求的。
初始化测试数据集的状态,具体而言:
定义保存测试数据及状态的实例变量
创建并保存正在测试的Activity的引用实例。
获得想要测试的Activity中任何UI组件的引用。
我们可以使用getActivity()方法得到正在测试的Activity的引用。
我们最好在执行测试之前,检查测试数据集的设置是否正确,以及我们想要测试的对象是否已经正确地初始化。这样,测试就不会因为有测试数据集的设置错误而失败。按照惯例,验证测试数据集的方法被称为testPreconditions()
。
例如,我们可能想添加一个像这样的testPreconditons()
方法:
public void testPreconditions() { assertNotNull(“mFirstTestActivity is null”, mFirstTestActivity); assertNotNull(“mFirstTestText is null”, mFirstTestText); }
Assertion(断言,译者注)方法源自于JunitAssert类。通常,我们可以使用断言来验证某一特定的条件是否是真的。
如果条件为假,断言方法抛出一个AssertionFailedError异常,通常会由测试Runner报告。我们可以在断言失败时给断言方法添加一个字符串作为第一个参数从而给出一些上下文详细信息。
如果条件为真,测试通过。
在这两种情况下,Runner都会继续运行其它测试用例的测试方法。
下一步,添加一个或多个测试方法来验证Activity布局和功能。
例如,如果我们的Activity含有一个TextView,可以添加如下方法来检查它是否有正确的标签文本:
public void testMyFirstTestTextView_labelText() { final String expected = mFirstTestActivity.getString(R.string.my_first_test); final String actual = mFirstTestText.getText().toString(); assertEquals(expected, actual); }
该 testMyFirstTestTextView_labelText()
方法只是简单的检查Layout中TextView的默认文本是否和strings.xml
资源中定义的文本一样。
注意:当命名测试方法时,我们可以使用下划线将被测试的内容与测试用例区分开。这种风格使得我们可以更容易分清哪些是测试用例。
做这种类型的字符串比较时,推荐从资源文件中读取预期字符串,而不是在代码中硬性编写字符串做比较。这可以防止当资源文件中的字符串定义被修改时,会影响到测试的效果。
为了进行比较,预期的和实际的字符串都要做为assertEquals()方法的参数。如果值是不一样的,断言将抛出一个AssertionFailedError异常。
如果添加了一个testPreconditions()
方法,我们可以把测试方法放在testPreconditions之后。
要参看一个完整的测试案例,可以参考本节示例中的MyFirstTestActivityTest.java。
我们可以在Eclipse中的包浏览器(Package Explorer)中运行我们的测试。
利用如下步骤构建和运行测试:
连接一个Android设备,在设备或模拟器中,打开设置菜单,选择开发者选项并确保启用USB调试。
在包浏览器(Package Explorer)中,右键单击测试类,并选择Run As > Android Junit Test。
在Android设备选择对话框,选择刚才连接的设备,然后单击“确定”。
在JUnit视图,验证测试是否通过,有无错误或失败。
连接Android真机或开启Android模拟器。
在项目目录运行如下命令:
./gradlew build connectedCheck