问题描述
在测试方法上使用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指出应自动将其拾取。