Vertx。从可以访问加载了Verticle本身的spring bean的测试

时间:2017-10-25 16:45:54

标签: java spring vert.x

我想在部署时使用spring上下文初始化一个Verticle实例(所有都是基于@Configurations的注释等),然后能够在集成测试中测试它,

我的垂直:

public class MyServiceVerticle extends AbstractVerticle {

    final VerticleStringContextLoader verticleStringContextLoader = new VerticleStringContextLoader(
        "com.my.config",
        MyConfig.class
    );

    @Override
    public void start(Future<Void> startFuture) {

        verticleStringContextLoader.connectWithVertx(vertx);

        verticleStringContextLoader.onStart(startFuture);
    }

    @Override
    public void stop() {
        verticleStringContextLoader.onStop();
    }

}

VerticleStringContextLoader我加载了带有verticle本身的spring bean。

像这样:

            sharedContext = new AnnotationConfigApplicationContext();
            sharedContext.register(VertxConfig.class);
            ...
            sharedContext.scan(componentScanPackages);
            sharedContext.refresh();

在测试中,  我想控制spring上下文,以便我能够访问那些已加载的bean。

在集成测试中:  当我部署我的Verticle:

 @RunWith(VertxUnitRunner.class) 
 ....

 vertx.deployVerticle(
                    MyServiceVerticle.class.getName(),
                    deploymentOptions,
                    testContext.asyncAssertSuccess( id -> {
                        ...
                    })
                );

问题是......我想我只是那样的捷径:

如何从部署Verticle并初始化弹簧的测试开始我可以访问/引用Loaded Spring beans

1 个答案:

答案 0 :(得分:0)

哦..我想我可以在3.5版本的vert.x(我使用3.4.2) -

中做到这一点

http://vertx.io/docs/apidocs/io/vertx/core/Vertx.html#deployVerticle-io.vertx.core.Verticle-io.vertx.core.DeploymentOptions-

部署时有适当的方法。