java - 无法从我的 JUnit 测试中设置集群 Vert.x 环境

标签 java unit-testing junit vert.x

我有一个 junit 测试,我想在其中设置集群 vert.x 环境。如果我运行 setUp 中的代码,它工作正常来自 public static void main() 的方法方法,但如果它是从 setUp 运行的则不是方法。
public void handle(AsyncResult<Vertx> res)方法永远不会被调用! 为什么?

@RunWith(VertxUnitRunner.class)
public class TestMyStuff {
    private Vertx vertx;

    @Before
    public void setUp(TestContext context) throws IOException {

        ClusterManager mgr = new HazelcastClusterManager();
        VertxOptions options = new VertxOptions().setClusterManager(mgr);
        Vertx.clusteredVertx(options, new Handler<AsyncResult<Vertx>>() {
            @Override
            public void handle(AsyncResult<Vertx> res) {
                if(res.succeeded()) {
                    vertx = res.result();

                    DeploymentOptions options = new DeploymentOptions()
                            .setConfig(new JsonObject().put("http.port", 8080)
                            );
                    vertx.deployVerticle(MyWebService.class.getName(), options, context.asyncAssertSuccess());
                    System.out.println("SUCCESS");
                } else {
                    System.out.println("FAILED");
                }
            }
        });
    }

    @Test
    public void printSomething(TestContext context) {
        System.out.println("Print from method printSomething()");
    }

Print from method printSomething()”正在写入,但不是来自 handle() 方法的“SUCCESS”或“FAILED”。

为什么它在 setUp 方法中不起作用,而是在 main() 中起作用?

最佳答案

VertX 确实有自己的功能来处理多线程和异步请求。

只需在您的测试函数中使用 Async 类:

   @Test
   public void printSomething(TestContext context) {
        Async async = context.async();
        System.out.println("Print from method printSomething()");
        async.complete();     
   }

希望它对 future 的一些 body 有帮助。

关于java - 无法从我的 JUnit 测试中设置集群 Vert.x 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32435571/

相关文章:

javascript - 如何提高 Jasmine-Blanket SpecRunner.html 的性能?

java - 当 JUnit 测试失败时,无法使用 Java 使用 Selenium WebDriver 进行屏幕截图

java - 如何测试 EJB 中的异常

php - 让 PHPUnit 忽略一些东西?

对象实例化时出现 java.lang.NullPointerException

java - 在 jenkins 中运行 maven/surefire 构建时间歇性 NoClassDefFoundError

java - 如何选择 datetime mysql 类型作为 java.time.LocalDateTime?

java - Getter 空指针而不调用它

java - 为什么 MessageContext 中的 HttpServletRequest 为 null?

java - Gson 有类似 WRITE_NULL_MAP_VALUES (Jackson) 的东西吗?