如何使用两个不同的依赖注入容器运行scalatest规范?

时间:2015-10-07 09:39:21

标签: scala scalatest

我有一个由scalatest spec文件组成的测试套件。它们都在我的DIC上的内存实现中运行良好,这是一种蛋糕模式的实现。

现在我想运行与集成测试相同的测试套件,这意味着内存中的实现将被与数据库通信的集合,与之通信的github API等替换。

  • 我应该创建不同的sbt环境并将我的di容器放在两个独立的环境(功能和集成)中,根据环境加载一个环境?这样做最好的方法是什么?
  • 我可以以某种方式在容器混入的功能和集成测试套件中收集测试吗?这样的事情怎么样?在哪里定义?

    xyz@xyz.xyz

我想重新使用我的测试来防止代码重复,但我很难在scala中解决这个问题,因为我对这种语言很陌生。

1 个答案:

答案 0 :(得分:0)

我最终制作了单独的测试套件。后来我可以配置sbt只运行这些文件,而不是让它自动搜索文件。

这样做的缺点是每次都需要大量的样板才能将测试添加到套件中。我希望有人会编辑我的答案以删除样板。

class FunctionalTestingSuite extends Suites {
  override val nestedSuites : IndexedSeq[Suite] = {
    //val actorSystem = FunctionalSpec.createActorSystem
    IndexedSeq(

      new CodeRepositorySpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper,

      new PipelineCollectionSpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper,
      new PipelineControllerSpec with FunctionalTestEnvironmentHelper,
      new PipelineSpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper,

      new JobCollectionSpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper,
      new JobControllerSpec with FunctionalTestEnvironmentHelper,
      new JobSpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper
    )
  }
}

依赖注入容器通过每次混合特征来注入,在这种情况下为FunctionalTestEnvironmentHelper。在集成环境中,使用IntegrationTestEnvironmentHelper