集成测试执行应该等到服务器准备好

Integration test execution should wait until server is ready

我已经编写了应该在 Web 应用程序的构建过程中执行的 Selenium 测试。我正在使用 maven-failsafe-plugin 执行集成测试,并使用 tomcat7-maven-plugin 在预集成测试阶段和执行之后启动 tomcat 服务器测试它在 post-integration-test 阶段停止。这很好用。

问题是 tomcat 服务器在启动时缓存了一些数据以提高搜索速度。我的一些测试依赖于该数据,因此集成测试应等待服务器完成缓存数据。

我怎样才能做到这一点?

我添加了一个进程条来显示加载进度。加载完成后,进程栏不再呈现,数据 table 将呈现。通过这种方式,我可以将这行代码添加到依赖于要加载的数据 table 的测试中:

longWait.until(ExpectedConditions.presenceOfElementLocated(By.id("dataTablePanel")));

此外,我使用 org.junit.runners.Suite 作为运行程序,以便我可以指定测试 classes 的执行顺序。因此,我可以先执行不依赖数据的测试,然后再执行需要数据的测试。为了确保数据存在并且我不需要在每个测试用例中检查,我创建了一个测试 class 它将只检查数据的存在并且将在依赖的所有测试用例之前执行关于数据。