vert.x 应用程序中的多项测试
Multiple test in vert.x application
你好,新年快乐
我正在使用 Vert.x 和 Scala 开发 API 应用程序。我正在使用此 page 中的代码示例来创建第一个基本 API 应用程序。
我的问题是,我在同一个地址和端口上有两个测试,但不在同一个路由上,但只有一个是 运行。另一方面,IDE return
VerticleSpec *** ABORTED ***
[info] java.net.BindException: Address already in use
[info] at sun.nio.ch.Net.bind0(Native Method)
[info] at sun.nio.ch.Net.bind(Net.java:433)
[info] at sun.nio.ch.Net.bind(Net.java:425)
[info] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
[info] at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:128)
[info] at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:558)
[info] at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1283)
[info] at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501)
[info] at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486)
[info] at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:989)
那么,我该如何进行所有测试 运行?
编辑
下面是来自官方仓库的一个文件。它部署和取消部署 API 的路由。那么,这意味着端口应该在一次测试后被占用然后释放,对吗?
import io.vertx.lang.scala.json.{Json, JsonObject}
import io.vertx.lang.scala.{ScalaVerticle, VertxExecutionContext}
import io.vertx.scala.core.{DeploymentOptions, Vertx}
import org.scalatest.{AsyncFlatSpec, BeforeAndAfter}
import scala.concurrent.Await
import scala.concurrent.duration._
import scala.reflect.runtime.universe._
import scala.util.{Failure, Success}
abstract class VerticleTesting[A <: ScalaVerticle: TypeTag] extends AsyncFlatSpec with BeforeAndAfter{
val vertx = Vertx.vertx
implicit val vertxExecutionContext = VertxExecutionContext(
vertx.getOrCreateContext()
)
private var deploymentId = ""
def config(): JsonObject = Json.emptyObj()
before {
deploymentId = Await.result(
vertx
.deployVerticleFuture("scala:" + implicitly[TypeTag[A]].tpe.typeSymbol.fullName,
DeploymentOptions().setConfig(config()))
.andThen {
case Success(d) => d
case Failure(t) => throw new RuntimeException(t)
},
10000 millis
)
}
after {
Await.result(
vertx.undeployFuture(deploymentId)
.andThen {
case Success(d) => d
case Failure(t) => throw new RuntimeException(t)
},
10000 millis
)
}
}
好吧,我找到了怎么做。
在 build.sbt 中,我刚刚添加了这一行,它运行良好
parallelExecution in Test := false
所以,如果有人遇到这个问题,它可能会有所帮助:)
你好,新年快乐
我正在使用 Vert.x 和 Scala 开发 API 应用程序。我正在使用此 page 中的代码示例来创建第一个基本 API 应用程序。
我的问题是,我在同一个地址和端口上有两个测试,但不在同一个路由上,但只有一个是 运行。另一方面,IDE return
VerticleSpec *** ABORTED ***
[info] java.net.BindException: Address already in use
[info] at sun.nio.ch.Net.bind0(Native Method)
[info] at sun.nio.ch.Net.bind(Net.java:433)
[info] at sun.nio.ch.Net.bind(Net.java:425)
[info] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
[info] at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:128)
[info] at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:558)
[info] at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1283)
[info] at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501)
[info] at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486)
[info] at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:989)
那么,我该如何进行所有测试 运行?
编辑 下面是来自官方仓库的一个文件。它部署和取消部署 API 的路由。那么,这意味着端口应该在一次测试后被占用然后释放,对吗?
import io.vertx.lang.scala.json.{Json, JsonObject}
import io.vertx.lang.scala.{ScalaVerticle, VertxExecutionContext}
import io.vertx.scala.core.{DeploymentOptions, Vertx}
import org.scalatest.{AsyncFlatSpec, BeforeAndAfter}
import scala.concurrent.Await
import scala.concurrent.duration._
import scala.reflect.runtime.universe._
import scala.util.{Failure, Success}
abstract class VerticleTesting[A <: ScalaVerticle: TypeTag] extends AsyncFlatSpec with BeforeAndAfter{
val vertx = Vertx.vertx
implicit val vertxExecutionContext = VertxExecutionContext(
vertx.getOrCreateContext()
)
private var deploymentId = ""
def config(): JsonObject = Json.emptyObj()
before {
deploymentId = Await.result(
vertx
.deployVerticleFuture("scala:" + implicitly[TypeTag[A]].tpe.typeSymbol.fullName,
DeploymentOptions().setConfig(config()))
.andThen {
case Success(d) => d
case Failure(t) => throw new RuntimeException(t)
},
10000 millis
)
}
after {
Await.result(
vertx.undeployFuture(deploymentId)
.andThen {
case Success(d) => d
case Failure(t) => throw new RuntimeException(t)
},
10000 millis
)
}
}
好吧,我找到了怎么做。
在 build.sbt 中,我刚刚添加了这一行,它运行良好
parallelExecution in Test := false
所以,如果有人遇到这个问题,它可能会有所帮助:)