Вам нужно отделить Toast
от вашей функции.Чтобы сделать это, выполните шаг ниже, где я использую ваш показанный пример и реализую их точно так, как вам нужно.Надеемся, что ответ на ваш запрос, и вы могли бы выполнить.
Сначала создайте интерфейс для печати (тост)
interface Printer {
void print(String message);
}
Затем сделайте ваш класс Signup
реализует Printer
отделить Toast
от вашей функции.Я полагаю, что ваш Signup
является Activity
.
public class Signup extends AppCompatActivity implements Printer {
// ... other codes ...
@Override
public void print(String message) {
Toast pass = Toast.makeText(Signup.this, message, Toast.LENGTH_SHORT);
pass.show();
}
}
Затем удалите Toast
из функции checkInput
и выполните печать с помощью printer
, отправленного функции
public boolean checkInput(String username, String email, String password, String confirmpassword, Printer printer) {
if (!email.contains("@") || !email.contains(".com")) {
printer.print("Email must be valid!");
return false;
}
if (!password.equals(confirmpassword)) {
printer.print("Passwords don't match!");
return false;
}
if (!(password.length() >= 6)) {
printer.print("Password must be at least 6 characters");
return false;
}
else {
return true;
}
}
Примечание: любую функцию, которая вызывает checkInput
из вашего класса, нужно будет отправить в Printer
, что на самом деле this
, если оно в Signup
классе, например
checkInput(testUser, testEmail, testPass, testConfirmPass, this)l;
Теперь в вашем тесте, просто внедрите макет Printer
например
@Test
public void testInvalidEmail(MainActivity mainActivity) {
String testUser = "testUser";
String testEmail = "testEmail.com"; //invalid
String testPass = "testPass";
String testConfirmPass = "testPass";
assertFalse(signUp.checkInput(testUser, testEmail, testPass, testConfirmPass, new Printer() {
@Override
public void print(String message) {
System.out.println(message);
}
}));
}
С этим вы можете выполнить свой тест по своему желанию, в то время как ваше приложение все еще печатает через Toast