登録フォームなどのテスト、一番いやですよね~
あれやこれやと境界値を入力して、エラーメッセージを確認したり…。
手でやるとしんどいので、こういう時こそ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 ペコッ