如果你的Android项目还不存在测试项目,那么你需要跟着下面的步骤来创建一个测试项目。
将m2
文件夹复制到你的用户目录下:c:/Users/xxx
(xxx为你的登录用户名称),并修改为.m2
。
修改你的Android项目,使得Target SDK version不低于17或高于18。
测试工程是普通的Java项目而不是Android项目,且需要JDK 7以上。
File → New → Java Project…
Project Name: compass-unittest
(根据你的项目名称修改,这里以罗盘项目为例)
点击Finish创建项目。
将libs目录拷贝到测试项目中。
然后打开项目的Build Path配置界面。
在“New Java Project”对话框中选择 “Projects” 选项卡
点击 “Add…”
选择 “compass”(你的Android项目)
点击 “OK”
在“New Java Project”对话框的顶部选择 “Libraries”
点击 “Add JARS”
选择“libs”下的所有jar包, 点击 “OK”
点击 “Add External Jars”
导航到你的SDK安装目录,然后选择“platforms/android-xx/android.jar”, 选择对应你的Android项目Target API的目录。
点击 “Open” 导入android.jar
在“New Java Project”对话框顶部选择 “Order and Export” 选项卡,选中android.jar
, 把它移动到robolectric jars
的下面。
点击 “Finish”, 关闭“New Java project”对话框。
如果你的版本控制系统里已经存在测试工程,那么你只需要检出代码并导入Eclipse。
从Clear Case签出测试工程“compass-unittest”。在Eclipse里导入工程,需要注意此工程是“Java Project”而不是“Android Project”。
双击执行compass-unittest\setup\setup.bat
。
如果不做这一步,测试是跑不起来的。因为Robolectric找不到项目中使用到的资源。
点击 “Run” → “Run Configurations…”
双击 “JUnit” (不是 “Android JUnit Test”)
Name: CompassTests
选择 “Run all tests in the selected project, package or source folder:” 单元框
点击 “Search” 按钮
选择 “CompassTest”
Test runner: JUnit 4
点击对话框底部的链接 “Multiple launchers available Select one…”
选择 “Use configuration specific settings”
选择 “Eclipse JUnit Launcher”
点击 “OK”
点击 “Arguments” 选项卡
在 “Working directory:” 处选择 “Other:” 单选框
点击 “Workspace…”
选择 “compass” (不是 “compass-unittest”, 在 ‘Other’ 编辑框中的值应该是 ‘{workspace_loc:compass}’), 然后点击 “OK”
点击 “Apply” 然后点击 “Close”
“Run” → “Run Configurations…” 选择 “JUnit” → “CompassTests” 点击 “Run”
package com.example.myproject;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
@RunWith(RobolectricTestRunner.class)
public class MainActivityTest {
@Test
public void should_show_notification_if_lost_connection() throws Exception {
// Given
activity = Robolectric.buildActivity(MainActivity.class).create().get();
// When
disconnectNetwork();
// Then
notificationBar = activity.findViewById(R.id.notification_bar);
assertThat(notificationBar).isVisible();
}
1 在测试类上指定TestRunner;
2 使用@Test注解测试方法;
3 用测试方法名称描述你的业务;
4 将测试代码分为三部分;
5 第一部分Given是准备条件,就是测试依赖的数据或环境;
6 第二部分When是触发被测方法,比如点击某个按钮;
7 第三部分Then是验证结果,看程序是否做出了正确的响应。