3

我将 Play Framework 2.0 配置为使用 SCCT 进行覆盖,并且可以使用play scct:cover.

但是,我的测试无法读取任何配置文件,因为配置文件不在类路径中。也就是说,我使用类型安全的 ConfigFactory 来加载配置文件,我收到以下错误: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'KEY.NAME'

play test并且play run工作得很好。

有什么方法可以强制 Play 的 Build.scala 将conf/目录添加到类路径中?

我的 plugins.sbt 文件的相关部分如下所示: resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

resolvers += Classpaths.typesafeResolver

resolvers += "scct-github-repository" at "http://mtkopone.github.com/scct/maven-repo"

addSbtPlugin("reaktor" % "sbt-scct" % "0.2-SNAPSHOT")

addSbtPlugin("play" % "sbt-plugin" % "2.0.4")

我的 Build.scala 的相关部分如下所示: lazy val additionalSettings = Defaults.defaultSettings ++ seq(ScctPlugin.instrumentSettings: _*)

val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA, settings = additionalSettings).settings(
    testOptions in Test := Nil,
    parallelExecution in test := false
)

谢谢!

4

2 回答 2

2

这可能不是特定于 Play 的。scct 插件可能应该在 ScctTest 配置中包含 Test 配置中的资源,就像它对其他类路径元素所做的那样。您可以通过将conf目录添加到 scct 的非托管资源目录列表来显式地自己执行此操作:

unmanagedResourceDirectories in ScctPlugin.ScctTest <+= baseDirectory( _ / "conf")
于 2013-03-18T18:57:15.700 回答
0

Mark 的解决方案是正确的,但是我花了一段时间才将他的代码放在正确的位置。对于其他为此苦苦挣扎的人,代码应如下所示:

val main = play.Project(appName, appVersion, appDependencies, settings = scct_settings).settings(
    ...
    unmanagedResourceDirectories in ScctPlugin.ScctTest <+= baseDirectory ( _ / "conf")
    ...
)
于 2014-03-10T21:58:41.920 回答