我正在使用 Mockito在 路径 上尝试 间谍
dirSpy = spy(Files.createTempDirectory(DIR_NAME));
我收到错误
Mockito无法模拟这个类:class sun.nio.fs.UnixPath
Mockito只能模拟可见&非最终课程。
如果您不确定为什么会收到此错误,请向邮件列表报告。
[如果您认为需要,我可以发布更长的堆栈跟踪]
我认为这是因为Path有本机实现 - 我的问题是,是否有一些解决方法可以让我检查在测试期间是否访问了特定位置
我试图测试的内容 - 我有一个每个用户的目录结构 - 我想做一个测试,检查在没有用户的情况下,没有完成冗余工作,并且没有访问所有用户的根。
在我的整个测试逻辑中,这是一个小小的验证,我可以不用它 - 只是认为它有一些很好的东西
答案 0 :(得分:1)
我的问题是,是否有一些解决方法可以让我检查在测试期间是否访问了特定位置
是的,使用WatchService
。
请注意,如果您能够这样做,观看路径本身不会给您带来太多的影响:Path
上的操作除了.toRealPath()
之外不执行I / O操作完全被调用如果文件系统有符号链接支持(好的,你使用一些Unix变体,所以很可能就是这种情况)。真正的I / O由路径FileSystemProvider
完成。但你也无法窥探......
因此WatchService
是您最好的解决方案。
有关示例,请参阅here。请注意WatchService
依赖于文件系统;这意味着你仍然更好地从你可以间谍的你的类中做文件I / O;)