如何解决在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指出应自动将其拾取。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。