簡體   English   中英

為具有自動裝配組件的Spring Boot Service應用程序編寫JUnit測試用例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM