IDE:Android Studio 2.2.2 | Jmockit:2.1 | Java:1.8.0_102-b14
我试图模拟类net.android.Uri的方法toString()。这个类上的所有方法都可以模拟OK,但是toString()方法。
@Test
public void method(@Mocked final Uri uri) throws Exception {
new NonStrictExpectations() {
{
uri.getHost();
result = "sendViewLog";
uri.getAuthority();
result = "getAuthority";
uri.getEncodedFragment();
result = "getEncodedFragment";
uri.getPort();
result = 8080;
uri.toString(); // <-------
result = "helloWorld";
}
};
sut.method();
}
结果:但是toString()返回null值,上面的所有方法都被模拟了。 你能给我一些解决方法来解决这个问题。
PS1: 我意识到当我将鼠标悬停在Expectations块内的toString方法时。它显示此警告消息:
报告对该调用结果的特定方法的任何调用 忽略。检查设置中指定的两种方法 用org.jetbrains.annotations.Contract注释的方法(pure = true) 检查。对于许多方法,忽略结果是完美的 合法,但对于某些方法,它几乎肯定是一个错误。 可能忽略调用结果的方法示例 是一个错误包括java.io.inputStream.read(),它返回 实际读取的字节数,java.lang.String或java上的任何方法 java.math.BigInteger,因为所有这些方法都是无副作用的 如果被忽视就毫无意义。
PS2: 当我通过uri实例检查null时,它会通过。 但是,我要检查的客户端代码是 uri.toString()。contains(“/ video”) 原因 uri.toString() == null,因此 contains(“/ video”)会抛出NullPointerException。
答案 0 :(得分:0)