我有一个scala类,它使用java nio WatchService来检测在特定目录中创建新文件夹。
当应用程序正在运行并且我手动将文件夹复制到目标文件夹中时,监视服务运行良好。
我使用 scalatest 创建了一个单元测试,它初始化我的类并使用 Apache Commons 将测试文件夹复制到目标文件夹中
FileUtils.copyDirectory(testFolder, new File(targetFolder, testFolder.getName), false)
监视服务在 30 秒内不会检测到在目标文件夹中创建的任何新条目。我的代码位于类似于
eventually(timeout(Span(30, Seconds)), interval(Span(1, Seconds))) {
// CHECK IF THE SERVICE DETECTED THE NEW ENTRY
}
知道为什么这在单元测试中不起作用吗?
刚刚发现问题出在我使用 scalatest 的方式上。我试图使用夹具在功能边界中打开/关闭我的服务:
describe("The WatchService") {
withWatchService { watchService =>
it("should test feature 1") { /* test code here */ }
it("should test feature 2") { /* test code here */ }
}
}
上面的代码不起作用:监视服务在功能完成之前关闭。为了使它工作,我创建了一个独特的功能,其中嵌套了夹具:
describe("The WatchService") {
it("should test features") {
withWatchService { watchService =>
/* test code here */
}
}
}