登録フォームなどのテスト、一番いやですよね~
あれやこれやと境界値を入力して、エラーメッセージを確認したり…。
手でやるとしんどいので、こういう時こそEspressoの出番です。
//RegisterActivity.java
public class Validate {
public static List<String> validateNormalRegisterInfo(HashMap<String, String> info, Context context){
List<String> errorList = new ArrayList<>();
if (! isEnoughCharacters(info.get("password"), 6)) {
errorList.add(context.getString(R.string.error_password));
}else if ( !info.get("password").matches("[0-9a-zA-Z]+")) {
errorList.add(context.getString(R.string.error_password_novalid));
}
return errorList;
}
//ValidateTest.java
public class ValidateTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void isEnoughCharacter_ForPassword(){
HashMap<String, String> map = new HashMap();
map.put("password", "12345");
List<String> testErrorList = new ArrayList<>();
Activity activity = mActivityRule.getActivity();
testErrorList.add(activity.getString(R.string.error_password));
Assert.assertEquals(testErrorList, Validate.validateNormalRegisterInfo(map, activity));
}
@Test
public void isValidCharacter_ForPassword(){
HashMap<String, String> map = new HashMap();
map.put("password", "うりぃぃぃぃぃぃ");
List<String> testErrorList = new ArrayList<>();
Activity activity = mActivityRule.getActivity();
testErrorList.add(activity.getString(R.string.error_password_novalid));
Assert.assertEquals(testErrorList, Validate.validateNormalRegisterInfo(map, activity));
}
}
あまり本題ではないのですが、テストコードからリソースを読みだすところ
getString(R.string.error_password)
に地味に詰まりましたね。
まだまだEspresso、勉強中なので、こうすればいいよ!とかあれば、教えてください。┌o ペコッ
