使用单元测试对于Android我遇到此错误:“无法在线程内创建处理程序”

时间:2017-01-22 07:38:34

标签: android unit-testing

使用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"));
}
}

1 个答案:

答案 0 :(得分:0)

异常消息表示您通过尚未准备好Looper的线程调用代码。通常情况下,这意味着你不是从UI线程调用,但你应该 - 一个正常的线程不准备Looper,但UI线程总是这样做。

因此,如果您正在尝试测试与UI相关的组件(正如我所看到的那样)。尝试使用Espresso: https://google.github.io/android-testing-support-library/docs/espresso/