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开发的技巧