在Micronaut测试中覆盖属性值

问题描述

在测试方法上使用threshold似乎无效。

这是我的result1 = {codes[i]: ucr_ncic_code[i] for i in range(len(ucr_ncic_code))} result2 = {districts[i]: district[i] for i in range(len(district))} result3 = {beats[i]: beat[i] for i in range(len(beats))}

@Property

application.yml

greeting: Hello

现在Application.java通过了,但是@Controller public class Application { @Property(name = "greeting") String greeting; @Get String hello() { return greeting + " World!"; } public static void main(String[] args) { Micronaut.run(Application.class,args); } } 失败了。

test1

输出

test2

如果我使用了@MicronautTest//(rebuildContext = true) public class DemoTest { @Inject @Client("/") HttpClient client; @Test void test1() { assertEquals( "Hello World!",client.toBlocking().retrieve(GET("/")) ); } @Property(name = "greeting",value = "Bonjour") @Test void test2() { assertEquals( "Bonjour World!",client.toBlocking().retrieve(GET("/")) ); } } ,则org.opentest4j.AssertionFailedError: expected: <Bonjour World!> but was: <Hello World!> 并没有使用新端口重新配置,并且第二次测试失败,并显示

rebuildContext = true

我将此代码放在https://github.com/salah3x/micronaut-test-property-override的GitHub上

这是一个错误还是我缺少什么?

解决方法

似乎手动刷新EmbeddedServer@MicronautTest(rebuildContext = true)组合可以使测试通过。

@MicronautTest(rebuildContext = true)
public class DemoTest {

    @Inject
    @Client("/")
    HttpClient client;

    @Inject
    EmbeddedServer server;

    @Test
    void test1() {
        assertEquals(
                "Hello World!",client.toBlocking().retrieve(GET("/"))
        );
    }

    @Property(name = "greeting",value = "Bonjour")
    @Test
    void test2() {
        server.refresh();
        assertEquals(
                "Bonjour World!",client.toBlocking().retrieve(GET("/"))
        );
    }
}

但这不是解决方案,而是解决方法,因为docs指出应自动将其拾取。