我正在玩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正常工作。提前感谢您的所有建议!