使用Android单元测试JUnit4我遇到了这个错误:
无法在未调用的线程内创建处理程序looper.prepare ??
这是我的测试类测试密码长度:
public class ChangePasswordTest {
private ChangePassword changePassword ;
@Before public void setUp() {
changePassword = new ChangePassword();
}
@Test public void testValidPassword() {
assertTrue(changePassword.validatePasswordExpression("validPassword1"));
}
@Test public void testShortPasswordReturnsFalse() {
assertFalse(changePassword.validatePasswordExpression("Short"));
}
@Test public void testNullPasswordReturnsFalse() {
assertFalse(changePassword.validatePasswordExpression(null));
}
@Test public void testLongPasswordReturnsFalse() {
assertFalse(changePassword.validatePasswordExpression("ThisPasswordIsWayTooLongSoTrySomethingElse"));
}
@Test public void testEightCharPasswordReturnsTrue() {
assertTrue(changePassword.validatePasswordExpression("IsValid1"));
}
@Test public void testNinteenCharPasswordReturnsTrue() {
assertTrue(changePassword.validatePasswordExpression("ThisPasswordIsValid"));
}
@Test public void testTwentyCharPasswordReturnsFalse() {
assertFalse(changePassword.validatePasswordExpression("ThisPasswordIsTwenty"));
}
}
答案 0 :(得分:0)
异常消息表示您通过尚未准备好Looper的线程调用代码。通常情况下,这意味着你不是从UI线程调用,但你应该 - 一个正常的线程不准备Looper,但UI线程总是这样做。
因此,如果您正在尝试测试与UI相关的组件(正如我所看到的那样)。尝试使用Espresso: https://google.github.io/android-testing-support-library/docs/espresso/