如果你的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是验证结果,看程序是否做出了正确的响应。