@QuarkusTest中夸克注射的优先级



我在集成测试中有顺序问题,因为我需要在其他类之前加载一个类,但它目前是随机的。

是否有可能在Quarkus中使用一些会说首先加载它(在运行应用程序上下文期间)的东西?

我猜这是不可能在测试中命令类的执行。它们随机执行。

我确信你可以在一个类中命令测试方法的执行。

也就是说,我在一个应用程序中使用了一种策略,在这个应用程序中,我需要启动一个进程,作为测试

的第一步.在我的测试包中,我用ApplicationScoped创建了一个类,用@Observes StartupEvent StartupEvent参数创建了一个方法。

当我执行mvn test时,这个方法是第一个被执行的。

类和一个方法来启动我的初始化过程

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import io.quarkus.runtime.ShutdownEvent;
import io.quarkus.runtime.StartupEvent;
@ApplicationScoped
public class AcceptorStarter {
private static final Logger LOG = LoggerFactory.getLogger(AcceptorStarter.class.getName());
@Inject
AcceptorServer acceptorServer;
// Starts automatically with application
public void onStart(@Observes StartupEvent StartupEvent) {
LOG.info("Starting FIX Acceptor to allow tests");
acceptorServer.init();
}
// Ends automatically with application
public void onStop(@Observes ShutdownEvent shutdownEvent) {
LOG.info("Finishing FIX Acceptor");
acceptorServer.stop();
}
}

方法的执行顺序

你可以命令测试方法的执行,像这样:

import static io.restassured.RestAssured.given;
import javax.inject.Inject;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import io.quarkus.test.junit.QuarkusTest;
@QuarkusTest
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class PropertiesRestTest {
@Test
@Order(1)
public void getQuickfixSessionSettings() {
given()
.when()
.get("/properties/quickfix-session-settings")
.then()
.statusCode(200);
}
@Test
@Order(2)
public void putQuickfixSessionSettings() {
given()
.body(appProperties.getQuickfixSessionSettings())
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON)
.when().put("/properties/quickfix-session-settings")
.then()
.statusCode(200);
}
@Test
@Order(3)
public void restauraQuickfixSessionSettings() {
given()
.when()
.put("/properties/restaura-quickfix-session-settings-original")
.then()
.statusCode(200);
}
}

最新更新