Jul*_*les 3 debugging scala intellij-idea sbt playframework
我在终端中执行以下命令sbt -jvm-debug 9999并使用 Intellij 15.0.4-1 中的默认值启动远程调试配置。接下来我执行 sbt 任务run,断点按预期工作。当我执行test任务时,尽管执行了相同的代码,但调试将不再起作用。
将play-scala激活剂种子与Play Framework 2.4. 测试是在规范 2 中编写的。有谁知道我可能做错了什么?
这是我的代码:
类 DebugTest.scala
object DebugTest {
def helloWorld(): Unit ={
println("Oh my")
}
}
Run Code Online (Sandbox Code Playgroud)
类 ApplicationSpec.scala
import org.specs2.mutable._
import play.api.test._
import play.api.test.Helpers._
class ApplicationSpec extends Specification {
"Application" should {
"just print oh my in console" in new WithApplication{
DebugTest.helloWorld()
}
}
}
Run Code Online (Sandbox Code Playgroud)
文件 build.sbt
lazy val root = (project in file(".")).enablePlugins(PlayScala)
scalaVersion := "2.11.7"
libraryDependencies ++= Seq( jdbc,
ws,
specs2 % Test,
"org.webjars.bower" % "adminlte" % "2.3.3",
"org.pac4j" % "play-pac4j" % "2.2.0-SNAPSHOT",
"org.pac4j" % "pac4j-http" % "1.9.0-SNAPSHOT",
"com.typesafe.play" % "play-cache_2.11" % "2.4.6"
)
resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"
resolvers += "Sonatype snapshots repository" at "https://oss.sonatype.org/content/repositories/snapshots/"
routesGenerator := InjectedRoutesGenerator
fork in run := true
fork in test := false
Run Code Online (Sandbox Code Playgroud)
文件 test.sbt
fork in test := false
Run Code Online (Sandbox Code Playgroud)
Play sbt 插件定义了以下设置:
fork in Test := true
Run Code Online (Sandbox Code Playgroud)
因此,当您启动测试时,会启动一个不同的 jvm(没有远程调试)。
你只需要添加你的build.sbt:
fork in Test := false
Run Code Online (Sandbox Code Playgroud)
您甚至可以创建一个test.sbt仅包含该行的文件并从源代码管理中忽略它。
这应该只在调试期间使用。之后,请回到默认行为;或者在同一个 sbt 会话中多次启动测试时可能会得到意想不到的结果。
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |