Để có thể thực hiện unit test trên android mình sẽ hướng dẫn các bạn sử dụng Robolectric.

testCompile 'org.easytesting:fest:1.0.16'
testCompile 'com.squareup:fest-android:1.0.8'
testCompile('org.robolectric:robolectric:3.1.1') {
exclude group: 'commons-logging', module: 'commons-logging'
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}

@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
- Bắt đầu 1 test case sử dụng hàm setUp (@Before), ở đây mình đang thực hiện viết test case cho MainActivity.
@Before public void setUp() throws Exception {
// khơi tạo activity
mActivity = Robolectric.buildActivity(MainActivity.class).create().get();
// khởi tạo các thành phần sử dụng trong activity
valueX = (EditText) mActivity.findViewById(R.id.edt_x);
valueY = (EditText) mActivity.findViewById(R.id.edt_y);
result = (TextView) mActivity.findViewById(R.id.tv_sum);
addButton = (Button) mActivity.findViewById(R.id.btn_ok);
}
- Bắt đầu mỗi hàm test thêm ký tự (@Test)
// test case kiểm tra các thành phần giao diện không null
@Test public void testNotNull() throws Exception {
assertNotNull(valueX);
assertNotNull(valueY);
assertNotNull(result);
assertNotNull(addButton);
assertNotNull(mActivity);
}
// test case kiểm tra giá trị nhập vào là 1 số nguyên
@Test public void testInputValue() throws Exception {
assertThat(TextUtils.isDigitsOnly(valueX.getText())).isEqualTo(true);
assertThat(TextUtils.isDigitsOnly(valueY.getText())).isEqualTo(true);
}
// test case kiểm tra kết quả là chính xác khi nhập (8 + -1 = 7)
@Test public void testResult() throws Exception {
valueX.setText("8");
valueY.setText("-1");
addButton.performClick();
assertThat(result.getText().toString().trim()).isEqualTo("7");
}
public class MainActivity extends Activity {
private EditText valueX, valueY;
private TextView result;
private Button btnSum;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
btnSum.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
if (TextUtils.isDigitsOnly(valueX.getText()) && TextUtils.isDigitsOnly(valueY.getText()))
{
sum();
}
}
});
}
private void initView() {
valueX = (EditText) findViewById(R.id.edt_x);
valueY = (EditText) findViewById(R.id.edt_y);
result = (TextView) findViewById(R.id.tv_sum);
btnSum = (Button) findViewById(R.id.btn_ok);
}
private void sum() {
int val1 = Integer.parseInt(valueX.getText().toString());
int val2 = Integer.parseInt(valueY.getText().toString());
int answer = val1 + val2;
result.setText(answer + "");
}
}

You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE