监视服务在集成测试中不起作用



我有一个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 */
    }
  }    
}

相关内容

  • 没有找到相关文章

最新更新