在Mockito的一条道路上进行间谍活动

时间:2014-04-01 11:47:30

标签: java mockito nio

我正在使用 Mockito在 路径 上尝试 间谍

dirSpy = spy(Files.createTempDirectory(DIR_NAME));

我收到错误

  

Mockito无法模拟这个类:class sun.nio.fs.UnixPath
  Mockito只能模拟可见&非最终课程。
  如果您不确定为什么会收到此错误,请向邮件列表报告。

[如果您认为需要,我可以发布更长的堆栈跟踪]

我认为这是因为Path有本机实现 - 我的问题是,是否有一些解决方法可以让我检查在测试期间是否访问了特定位置

我试图测试的内容 - 我有一个每个用户的目录结构 - 我想做一个测试,检查在没有用户的情况下,没有完成冗余工作,并且没有访问所有用户的根。

在我的整个测试逻辑中,这是一个小小的验证,我可以不用它 - 只是认为它有一些很好的东西

1 个答案:

答案 0 :(得分:1)

  

我的问题是,是否有一些解决方法可以让我检查在测试期间是否访问了特定位置

是的,使用WatchService

请注意,如果您能够这样做,观看路径本身不会给您带来太多的影响:Path上的操作除了.toRealPath() 之外不执行I / O操作完全被调用如果文件系统有符号链接支持(好的,你使用一些Unix变体,所以很可能就是这种情况)。真正的I / O由路径FileSystemProvider完成。但你也无法窥探......

因此WatchService是您最好的解决方案。

有关示例,请参阅here。请注意WatchService依赖于文件系统;这意味着你仍然更好地从你可以间谍的你的类中做文件I / O;)