![](/img/trans.png)
[英]No qualifying bean for autowired JPA repository in JUnit test in Spring Boot application
[英]Writing JUnit test cases for a Spring Boot Service Application with autowired components
我正在嘗試為我創建的spring服務應用程序編寫JUnit測試用例。 我已經完成了對該應用程序的煙霧測試,並希望編寫一系列向前發展的單元測試。
我從測試服務層開始。 我的@AutoWired組件(包括我的DAO對象)遇到問題。 當運行Spring應用程序本身時,一切正常。 但是,在運行我的JUnit測試時,它們不會自動接線並保持為空,從而導致NPE。 這是我正在使用的框架:
服務文件:
@Component
public class WebServiceImpl implements WebService{
@Autowired
WebDAO webDAO;
@Override
public List<String> getItems(){
List<String> items = webDAO.getItems();
/*
* some filtering/actions done here
*/
return items;
}
}
測試文件:
@RunWith(SpringRunner.class)
@SpringBootTest
public class ServiceTests{
private WebService service;
@Before
public void setup(){
this.service = new WebServiceImpl();
}
@Test
public void getItemsTest(){
List<String> items = this.service.getItems();
assertNotNull(items);
}
}
運行此測試時,我從webDAO獲得了NPE。 它不會像在春季啟動啟動時那樣自動接線。 我剛開始從事Spring工作,因此我不確定最佳方法。 我認為這並沒有自動裝配,因為我沒有像通常那樣啟動應用程序,而是直接實例化該類。
我唯一可能的想法是,僅出於測試目的,在此處創建dao的getter / setter。 但是,我將對每個使用的自動接線字段和Idk(如果會產生任何不良結果)執行此操作。
您可以將要測試的組件自動連接到測試中。
您正在Spring容器外部創建組件,因此它不了解該組件。
private WebService service;
@Before
public void setup(){
this.service = new WebServiceImpl();
}
應該只是
@Autowired
private WebService service;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.