如何运行服务器作为测试的一部分?

时间:2014-12-21 11:02:50

标签: scala sbt spray typesafe-activator

我正在使用spray编写一个简单的REST API,作为其中的一部分,我希望能够使用模拟数据设置数据库,然后使用该测试数据库启动REST服务器

问题在于我真的不知道如何启动测试实例以启动并运行以执行测试。请指导。

2 个答案:

答案 0 :(得分:2)

从sbt的角度来看,测试和生产代码之间的区别主要在于代码的位置。它由the configuration scope facility in sbt驱动:

  

配置定义了构建的风格,可能有自己的类路径,源,生成的包等。配置概念来自Ivy,sbt用于托管依赖项库依赖项,以及来自MavenScopes。

您在Compile范围内可以做的事情应该很容易适用于Test,反之亦然。它可能听起来也可能不那么容易,但沿途不应该有那么多箍。

As I pointed out in a comment,当你执行sbt run时,就好像你sbt compile:run ......好吧,差不多,但你可以假设,它确实如此。配置数据库和服务器的测试实例,并使用sbt test:run或更好的方式执行它们 - 编写一个测试,可能是集成测试,它将在运行过程中完成所需的所有操作并为其运行使用sbt it:test - 请参阅Integration Tests

答案 1 :(得分:1)

您可以将对象添加到/ src / test。除了使用模拟数据库之外,此对象将像正常情况一样引导服务器。

如果您未将此对象标识为测试类,则它不会干扰您的测试套件。这取决于您使用的测试系统。

例如,在Spec2中,它将自动运行任何扩展规范的测试类。如果不扩展此类,则不会运行它。

包装层面的额外隔离可能是明智的。