Scala集成测试未挑选测试配置

gijlo24d  于 2022-11-09  发布在  Scala
关注(0)|答案(1)|浏览(159)

我想在我的Scala项目中编写集成测试用例,该项目使用Play框架。我正在尝试示例化一个具有所有依赖项的服务类,例如

class ATest extends AsyncFlatSpec with MockitoSugar{
  implicit val d = org.json4s.DefaultFormats
  implicit val tempEc = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10))
  val logger = CustomLogger.getLogger(this.getClass.getCanonicalName)

  val testConfig = ConfigFactory.load("test.conf")
  val configuration = Configuration(testConfig)
  println(configuration.keys)
  val app1: Application = new GuiceApplicationBuilder().configure(configuration).build
  val service =  Application.instanceCache[AService].apply(app1)

我面临的问题是,当我从test.conf打印正确的密钥时,但当调用val service = Application.instanceCache[DwSqsService].apply(app1)时,它选择application.conf。为什么会这样呢?
我甚至尝试了-Dconfig.resource=test.conf标记。尽管如此,application.conf仍被选中。我不能找到为什么会有这种行为。有什么想法吗?
添加更多信息:我尝试将此代码添加到我的构建中。sbt、javaOptions in Test += "-Dconfig.file=conf/test.conf"javaOptions in Test += "-Dconfig.file=test.conf"
我也试过使用命令行sbt coverage test coverageReport -J-Xmx6g -Dconfig.file=test.conf,我启动了我的应用程序,但在测试中不起作用

idfiyjo8

idfiyjo81#

您可以将SBT配置设置为在测试模式下加载test.conf文件。

Test / javaOptions ++= Seq("-Dconfig.resource=test.conf")

当您Play Java项目使用sbt test运行时,它会将您的test.conf加载到conf文件夹中。
请注意,该代码将在SBT 1.4+版本上使用。如果您使用的是较旧的版本,则只需进行调整,因为较旧的版本使用其他语法(可能是javaOptions in Test ++= Seq("-Dconfig.resource=test.conf"),但我不确定。

相关问题