在Scala + SpringBoot应用程序中使用注释@LocalServerPort和ScalaTest

时间:2017-07-10 21:24:19

标签: spring scala spring-boot

我正在玩Scala和Spring Boot只是为了看看这些工作有多好。

我可以使用Scala轻松引导Spring Boot应用程序,这里是应用程序的入口点:

import org.springframework.boot.SpringApplication

object Application extends App {
  SpringApplication.run(classOf[BootConfiguration])
}

这是配置类:

import org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootApplication
class BootConfiguration

到目前为止一切顺利。我甚至可以使用Spring注释轻松地添加测试:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = Array(classOf[BootConfiguration]))
@RunWith(classOf[JUnitRunner])
class ApplicationSpec extends FlatSpec with Matchers {

  "An application" should "bootstrap itself correctly" in {
    "lalalala" shouldEqual "lalalala"
  }

}

但老实说我不知道​​如何使用在webEnvironment设置期间选择的随机端口。通常在java / groovy中我可以使用注释 @LocalServerPort @Value(“$ {local.server.port}”)并在测试类中执行此操作在一个类字段上排序:

@LocalServerPort private int port

那就可以了。在Scala中虽然它根本不起作用,但我尝试使用 val var

这件事:

@LocalServerPort var port: Int = _

编译但默认端口为0,用 val 做这样的事情显然会迫使我将类测试声明为抽象类 - 不是我想到的。我可以想到至少一些解决方法,所以我仍然可以使用ScalaTest很好地测试这个应用程序,但这个问题的重点是让@LocalServerPort正常工作。提前感谢您的所有建议!

0 个答案:

没有答案