Android单元测试

2016-07-20  本文已影响101人  jacky123

之前一直忽略单元测试,遇到问题的时候 (修改-运行-等待-操作-验证) 或者 (修改-debug-操作-验证),每次调试都是需要进行这么繁琐的步骤。因为一直没有去了解,去接触单元测试,干了这么久的开发,好像也习惯了,对这些也不厌其烦。也只能说是习惯了,但是难免碰到大姨夫的时候,心里一着急,也会有摔杯子的冲动。But 现在接触到了单元测试,改变命运的时候到了。
现在流程的单元测试框架有很多:


Robolectric

对于Android app来说,写起单元测试来瞻前顾后,一方面单元测试需要运行在模拟器上或者真机上,麻烦而且缓慢,另一方面,一些依赖Android SDK的对象(如Activity,TextView等)的测试非常头疼,Robolectric可以解决此类问题,它的设计思路便是通过实现一套JVM能运行的Android代码,从而做到脱离Android环境进行测试。下面对Robolectric3.0做个简单介绍,并列举了如何对Android的组件和常见功能进行测试的示例。

  1. 添加gradle 引入Robolectric3.0 和 AssertJ的依赖
testCompile "org.robolectric:robolectric:3.0"
testCompile "org.assertj:assertj-core:1.7.0"
  1. Activity测试
Paste_Image.png
import android.app.Activity;
import android.widget.Button;
import android.widget.TextView;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;

import static org.assertj.core.api.Assertions.assertThat;

/**
 * Created by jack on 2016/7/20.
 */

@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class MainActivityTest {
    Activity activity;
    Button button;
    TextView textView;

    @Before
    public void setUp() {
        activity = Robolectric.setupActivity(MainActivity.class);
        button = (Button) activity.findViewById(R.id.bt_1);
        textView = (TextView) activity.findViewById(R.id.tv_hellow);
    }

    @Test
    public void mainActivity() {
        MainActivity mainActivity = Robolectric.setupActivity(MainActivity.class);
        assertThat(mainActivity.getTitle()).isEqualTo(mainActivity.getTitle());
        System.out.print(mainActivity.getTitle().equals((mainActivity.getTitle())));
    }

    @Test
    public void getTextContent() {
        textView.setText("123");
        button.performClick();
        System.out.print(textView.getText().toString());
    }
}

1. 运行mainActivity测试单元

Paste_Image.png

2. 运行getTextContent测试单元

Paste_Image.png

未完待续

参考资料

上一篇下一篇

猜你喜欢

热点阅读