Scalatra测试失败使用ScalatraSuite(FunSuiteLike)进行standlone sbt项目

时间:2015-12-03 09:43:05

标签: scala jetty scalatest scalatra

我正在为scalatra路线运行测试,它使用ScalatraSuite(FunSuiteLike)无法用于独立的sbt项目(使用Jetty)。

产生的错误是:
java.lang.IllegalArgumentException:要求失败:检测到的本地端口是< 1,不允许

我也试过单独运行jetty然后运行" sbt test",但是它也抛出同样的错误。有人可以帮忙解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

我有同样的错误,我能够弄清楚原因是什么。

在我的情况下,我混淆了一个特征,它覆盖了beforeAll和afterAll方法。这意味着ScalatraSuite中定义的beforeAll和afterAll没有运行。 以下是Scalatra/ Scalatest documentation for ScalatraSuite的引用,帮助我找出问题所在 -

  

请注意,以上所有特征均基于ScalatraSuite   混合在BeforeAndAfterAll中。它会覆盖beforeAll()和   afterAll()所以它可以启动/停止嵌入式HTTP服务器。因为   如果您的测试类还需要覆盖beforeAll和/或   afterAll只记得调用super.beforeAll()和/或   super.afterAll()。

ScalatraSuite的beforeAll()没有运行,所以我的Scalatra测试实例没有运行。如果您的问题具有相同的原因,那么在您的测试类中调用super.beforeAll()' beforeAll()步骤可能是修复它所需的全部内容。 在我的情况下,我不得不重新设计我的项目中的beforeAll()步骤,以便可以设置许多不同的依赖项,但我可以确保调用ScalatraSuite中的beforeAll()。

答案 1 :(得分:0)

不是一个直接的答案,但我遇到了同样的错误,发现这是特定的测试,会抛出这个错误,而不是全部。我的问题最终成为一个代码格式化问题,其中错位的{使一个测试包含其他测试。

所以最终,如果测试已经运行然后因此错误而停止,则很可能是与代码相关的问题。我在scalatra.specs2中发现了这一点,但在ScalatraSuite中也是如此。

希望你解决了你的问题。