1

我正在尝试为 vertx 相关的东西编写一个测试用例。

这是我的代码

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;

import io.vertx.core.Vertx;
import io.vertx.core.http.HttpClient;
import io.vertx.core.http.HttpServer;
import io.vertx.ext.unit.Async;
import io.vertx.ext.unit.TestContext;
import io.vertx.ext.unit.junit.VertxUnitRunner;

@RunWith(VertxUnitRunner.class)
public class MyJUnitTest {

static Vertx vertx;
static HttpServer server;

@BeforeAll
public static void before(TestContext context) {
    Async async = context.async();
    vertx = Vertx.vertx();
    server = vertx.createHttpServer().requestHandler(req -> req.response().end("foo")).listen(8080,
            context.asyncAssertSuccess());
    System.out.println("Service started....");
    async.complete();
}

@AfterAll
public static void after(TestContext context) {
    vertx.close(context.asyncAssertSuccess());
}

@Test
public void test1(TestContext context) {
    // Send a request and get a response
    HttpClient client = vertx.createHttpClient();
    Async async = context.async();
    client.getNow(8080, "localhost", "/", resp -> {
        resp.bodyHandler(body -> {
            context.assertEquals("foo", body.toString());
            client.close();
            async.complete();
        });
    });
}}

收到以下错误:

org.junit.jupiter.api.extension.ParameterResolutionException:没有为可执行文件 [public static void remoteprocess.java.samples.MyJUnitTest.before(io.vertx.ext) 中的参数 [io.vertx.ext.unit.TestContext arg0] 注册的 ParameterResolver .unit.TestContext)]。在 org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameter(ExecutableInvoker.java:191) 在 org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameters(ExecutableInvoker.java:174) 在 org.junit.jupiter.engine .execution.ExecutableInvoker.resolveParameters(ExecutableInvoker.java:135) 在 org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:116) 在 org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$invokeBeforeAllMethods org.junit.jupiter.engine.execution 中的 $5(ClassTestDescriptor.java:228)。internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:86) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit。 runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner。在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 处运行(RemoteTestRunner.java:460) 被抑制:org.junit.jupiter.api.extension.ParameterResolutionException:没有为参数注册 ParameterResolver [io.vertx.ext.unit.TestContext arg0] 在可执行文件 [public static void remoteprocess.java.samples.MyJUnitTest.after(io.vertx.ext.unit.TestContext)] 中。在 org.junit。

请帮助解决这个问题。

4

1 回答 1

1

问题是您没有使用 vertx 信息“包装”文本。

请检查文档: https ://vertx.io/docs/vertx-junit5/java/#_integration_with_junit_5

此外,您应该使用注释@ExtendWith(VertxExtension.class)而不是RunWith()在方法中使用该参数。

于 2018-09-25T14:32:09.203 回答