我想使用以下测试代码对 java.nio.file.Files 中的公共静态函数readAllBytes进行存根。
@PrepareForTest(Files.class)
public void testGetNotExistingRestFile() throws Exception {
PowerMockito.mockStatic(Files.class);
PowerMockito.doThrow(mock(IOException.class)).when(Files.readAllBytes(any(Path.class)));
}
Run Code Online (Sandbox Code Playgroud)
每次抛出 NullPointerException 时,我都能找出我做错了什么。
java.lang.NullPointerException
at java.nio.file.Files.provider(Files.java:67)
at java.nio.file.Files.newByteChannel(Files.java:317)
at java.nio.file.Files.newByteChannel(Files.java:363)
at java.nio.file.Files.readAllBytes(Files.java:2981)
at nl.mooij.bob.RestFileProviderTest.testGetNotExistingRestFile(RestFileProviderTest.java:53)
Run Code Online (Sandbox Code Playgroud)
如何使用PowerMockito 从 java.nio.file.Files存根函数readAllBytes ?
有没有可能一种味道是基于另一种味道的?
例如 构建.gradle:
productFlavors {
flavor1 {
flavorBase "main"
}
flavor2 {
flavorBase "main"
}
flavor3 {
flavorBase "main"
}
flavor4 {
flavorBase "flavor3"
}
flavor5 {
flavorBase "flavor3"
}
}
Run Code Online (Sandbox Code Playgroud)

是否有插件支持对自定义对象进行比较操作?
我想用这个:
class MyTemperatureObject implements Comparable<MyTemperatureObject> {
...
@Override
public int compareTo(MyTemperatureObject object) {
return getValue().compareTo(object.getValue());
}
}
MyTemperatureObject a;
MyTemperatureObject b;
if (a < b){
...
}
Run Code Online (Sandbox Code Playgroud)
这给出了编译错误:
Operator '<' cannot be applied to MyTemperatureObject
Run Code Online (Sandbox Code Playgroud)
但我认为编译器可以使用Comparable接口来评估这一点。或者是否有理由认为这样做不可能或不明智。
我知道我可以使用compareTo函数
a.compareTo(b) < 0
Run Code Online (Sandbox Code Playgroud)
但我认为这更好读/理解
a < b
Run Code Online (Sandbox Code Playgroud)