我有一個簡單的豆子
public class MyBean {
@Value("${propItem}")
private boolean propItem;
public String someMethod() {
if (propItem) {
return "XX";
} else {
return "XY";
}
}
}
我有一個src/test/resources名為的屬性檔案,application-test.yml其中有一個屬性
propItem: true
如果我在下面運行我的測驗 - 我希望它通過,但它失敗了,因為propItem總是false
@SpringBootTest
public class MyBeanTest {
public void testFunc() {
assertTrue(new MyBean().someMethod().equals("XX"); // Fails because it's "XY"
}
}
為什么這是個問題?我以為 Spring 會自動完成所有這些,但似乎不是
uj5u.com熱心網友回復:
你需要:
- 通過添加構造型注釋定義
MyBean為 bean:@Component,@Configuration或@Service - 在您的測驗類上定義一個活動組態檔:
@ActiveProfile("test")
你的班級應該是這樣的:
@Component
public class MyBean {
@Value("${propItem}")
private boolean propItem;
public String someMethod() {
if (propItem) {
return "XX";
} else {
return "XY";
}
}
}
你的測驗類:
@SpringBootTest
@ActiveProfile("test")
public class MyBeanTest {
@Autowired
private MyBean myBean;
@Test
public void testFunc() {
assertTrue(myBean.someMethod().equals("XX")); // Fails because it's "XY"
}
}
uj5u.com熱心網友回復:
您正在手動實體化 mybean,這樣就不會注入屬性。您需要從背景關系中獲取 bean。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/463674.html
上一篇:如何強制Tomcat(嵌入在SpringBoot中)使用標準java.util.logging而不是JULI?[復制]
下一篇:同時觸發多個請求
