我正在尝试在 Spock 中编写单元测试来测试这个
verify()
方法,但是 Files.getOwner(path)
总是抛出 NoSuchFileException
异常,我怎样才能防止这种情况并使 owner
在 where
条件下参数化?试图存根Files
对象但没有运气。
public void verify(){
try{
Path path = Paths.get("/tmp");
String owner = Files.getOwner(path).getName();
if (owner.equals("root")) {
anotherClass.doSomthing();
}
} catch (IOException e) {
log().error("message");
}
}
注意我不能在这里使用
PowerMock
或JMockit
,源代码在Java
,测试代码在Groovy
.
在第三方工具列表中,您可以找到spock-mockable和其他工具的链接。
此处未列出,但可通过相应的扩展机制从 Spock 1.x/2.x、JUnit 4/5、TestNG 或作为 Java 代理的任何其他测试工具使用,您可以使用 Sarek,我开发了一段时间的框架之前为我自己的最终目标是更好地将它集成到 Spock DSL 中,但由于个人原因从未发生过。但它功能齐全,可以涵盖比第三方工具列表中列出的工具更复杂的情况,例如模拟/修改构造函数、JVM 引导程序类、静态初始化程序块。它有点笨拙,但非常强大。查看每个模块中的 Javadoc 和测试,以了解如何使用
spock-mockable 可能对大多数用例来说已经足够好了,并且很容易通过注释应用。如果您需要更多功能,请随时联系我了解 Sarek,如果您找不到如何解决您的特定用例。