文章目录
  1. 1. 环境搭建
    1. 1.1. Gradle 配置
    2. 1.2. 通过注解配置测试类
  2. 2. 测试实例
    1. 2.1. 源程序代码
    2. 2.2. 测试代码

Android 开发过程中会到 Junit 来进行单元测试,那么Android中的界面应该用什么来测?
今天我们的主角就是 Robolectric ,Robolectric 可以用来在Android 上进行界面测试,下面我们就来学习下 Robolectric怎么使用。

环境搭建

Gradle 配置

在Android Studio 下使用Robolectric 非常简单只需要一行代码就可以了。
在build.gradle 文件下配置如下依赖关系

1
testCompile "org.robolectric:robolectric:3.0"

通过注解配置测试类

1
2
3
4
5
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class MainActivityUITest {

}

完成以上两步就把 Robolectric的环境搭建好了,下面我们来学习下怎样测界面。

测试实例

源程序代码

MainActivity.java 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class MainActivity extends Activity {

Button button;
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.button);
textView = (TextView) findViewById(R.id.textView);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setText("Text change");
startActivity(new Intent(MainActivity.this, NextActivity.class));
}
});
}
}

NextActivity.java 代码

1
2
3
4
5
6
7
8
public class NextActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next_avtivity);
}
}

测试代码

MainActivityUITest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class MainActivityUITest {

private Activity activity;

@Before
public void setup() {
activity = Robolectric.buildActivity(MainActivity.class).create().get();
}


@Test
public void clickButton_shouldTextViewChange() {

Button button = (Button) activity.findViewById(R.id.button);
TextView textView = (TextView) activity.findViewById(R.id.textView);

String resultsText = textView.getText().toString();
assertThat(resultsText, equalTo("Hello World!"));
button.performClick();
resultsText = textView.getText().toString();
assertThat(resultsText, equalTo("Text change"));
}

@Test
public void clickButton_shouldStartNextActivity() {
activity.findViewById(R.id.button).performClick();
Intent expectedIntent = new Intent(activity, NextActivity.class);
Intent actualIntent = ShadowApplication.getInstance().getNextStartedActivity();
assertEquals(expectedIntent, actualIntent);
}
}

以上就是Robolectric 框架的基本使用,完整代码我已经上传到Github上了,想要更深入的学习以上就是Robolectric,可以去官网学习。

欢迎大家关注我的微信公众号,我会不定期的分享些Android开发的技巧

文章目录
  1. 1. 环境搭建
    1. 1.1. Gradle 配置
    2. 1.2. 通过注解配置测试类
  2. 2. 测试实例
    1. 2.1. 源程序代码
    2. 2.2. 测试代码