簡體   English   中英

用於測試的 Micronaut 上下文配置

[英]Micronaut context configuration for test

我正在嘗試在 micronaut (3.2.7) 應用程序中編寫基本的 controller 測試。 當我運行它時,它無法啟動,因為它也想創建與數據庫相關的 bean。 micronaut-hibernate-jpa、flyway等都在pom.xml中。

我可以以某種方式配置上下文,這樣它就不會拾取 hikaripool、flyway 和 jpa realted beans?

11:46:23.820 [main] INFO  i.m.context.env.DefaultEnvironment - Established active environments: [test]
11:46:24.112 [main] WARN  i.m.c.h.j.JpaConfiguration$EntityScanConfiguration - Runtime classpath scanning is no longer supported. Use @Introspected to declare the packages you want to index at build time. Example @Introspected(packages="foo.bar", includedAnnotations=Entity.class)
11:46:24.133 [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
11:46:25.197 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"

編碼:

class HelloTest {

    private static EmbeddedServer server;
    private static HttpClient client;

    @BeforeAll
    public static void setupServer() {
        server = ApplicationContext.run(EmbeddedServer.class);
        client = server
            .getApplicationContext()
            .createBean(HttpClient.class, server.getURL());
    }

    @AfterAll
    public static void stopServer() {
        if (server != null) {
            server.stop();
        }
        if (client != null) {
            client.stop();
        }
    }

    @Test
    void testHelloWorldResponse() {
      ...
    }

}

我試圖排除這樣的配置,但沒有運氣:

        server = ApplicationContext.builder("test")
            .exclude("io.micronaut.configuration.hibernate.jpa","io.micronaut.configuration.jdbc.hikari")
            .run(EmbeddedServer.class);

注意:如果我從 application.yml 中刪除所有內容,則測試有效。 看起來在測試中默認屬性已解決,這會打開 jpa、metrics 等。所以我想測試也需要以某種方式忽略默認設置。

您可以使用(測試)環境特定屬性文件覆蓋所有(默認) application.ymlhttps://docs.micronaut.io/latest/guide/index.html#_included_propertysource_loaders

因此,您可以只提供一個專用的application-mycustomtest.yml作為測試資源的一部分,您可以在其中覆蓋所有默認設置。

然后你可以指定作為測試的一部分, 哪些環境應該是活動的:

@MicronautTest(environments={"mycustomtest"})

在 gitter 和 currenlty 上詢問 micronaut 團隊,唯一的選擇是沒有默認配置,並且有多個用於 controller、repo 和 e2e 測試的配置文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM