【发布时间】:2015-12-03 09:43:05
【问题描述】:
我正在尝试使用ScalatraSuite (FunSuiteLike) 对 Scalatra 路由进行测试。运行测试时收到IllegalArgumentException 并出现以下错误:
检测到的本地端口为
我也尝试单独运行 Jetty,然后运行“sbt test”,但出现了同样的错误。谁能帮忙解决这个问题?
【问题讨论】:
标签: scala jetty scalatest scalatra
我正在尝试使用ScalatraSuite (FunSuiteLike) 对 Scalatra 路由进行测试。运行测试时收到IllegalArgumentException 并出现以下错误:
检测到的本地端口为
我也尝试单独运行 Jetty,然后运行“sbt test”,但出现了同样的错误。谁能帮忙解决这个问题?
【问题讨论】:
标签: scala jetty scalatest scalatra
我遇到了同样的错误,并且能够找出原因是什么。
就我而言,我混合了一个覆盖 beforeAll 和 afterAll 方法的特征。这意味着 ScalatraSuite 中定义的 beforeAll 和 afterAll 没有运行。这是来自Scalatra's documentation for ScalatraSuite 的引用,它帮助我找出问题所在:
请注意,以上所有特征均基于
ScalatraSuite混入BeforeAndAfterAll。它覆盖beforeAll()和afterAll()所以它可以启动/停止嵌入式 HTTP 服务器。因为 那,如果你的测试类也需要覆盖beforeAll和/或afterAll记得打电话给super.beforeAll()和/或super.afterAll().
由于我的自定义beforeAll 钩子没有调用super.beforeAll(),因此没有调用Scalatra 启动HTTP 服务器的机制,因此没有运行测试服务器。将super.beforeAll() 添加到我的自定义beforeAll 方法可以解决问题。
就我而言,我必须重新设计项目中的beforeAll 步骤,以便可以设置许多不同的依赖项...但我能够确保调用ScalatraSuite 中的beforeAll() .
【讨论】:
不是直接的答案,但我遇到了同样的错误,发现是特定的测试会抛出这个错误,而不是全部。我的问题最终是一个代码格式问题,其中一个错误的{ 使单个测试包含其他测试。
因此,最终,如果测试一直在运行,然后因出现此错误而停止,则很可能是与代码相关的问题。我在 scalatra.specs2 中发现了这一点,但在 ScalatraSuite 中也可能发生同样的情况。
希望你解决了你的问题。
【讨论】: