java.lang.RuntimeException:android.text.TextUtils 中的方法 isEmpty 未被模拟

Hen*_*aye 7 android mockito

loginUnit.java(测试文件)

@RunWith(MockitoJUnitRunner.class)
public class loginUnit {
    @Mock
    TextUtils mMockTextUtils;

    @Test
    public void checkStringEmpty(){

        String empty = "";
        when(mMockTextUtils.isEmpty(empty)).thenReturn(true);
        assertThat(LoginActivity.isStringEmpty(empty),is(equalTo(true)));
    }
Run Code Online (Sandbox Code Playgroud)

来自 LoginActivity 的 UUT(被测单元)

public static boolean isStringEmpty(String s){
        return TextUtils.isEmpty(s);
}
Run Code Online (Sandbox Code Playgroud)

我总是收到 android.text.TextUtils not mocked 错误,请帮助我?

Dhi*_*rma 7

在 src/test/java 文件夹中,添加 android.text 包并创建 TextUtils.java

public class TextUtils {
  public static boolean isEmpty(CharSequence str) {
    return str == null || str.length() == 0;
  }
}
Run Code Online (Sandbox Code Playgroud)

详细信息在这里:https://medium.com/@okmanideep/dont-create-that-stringutils-to-unit-test-your-android-class-8ab32af34e84