簡體   English   中英

在這個涉及數據分頁的 Java 方法中可以對什么進行單元測試?

[英]What can be unit tested in this Java method involving pagination of data?

單元測試的初學者。 以下是要測試的方法 -

public ListBeneficiaryResponseDTO getBeneficiaryOfMerchants(Long merchantId, Integer page, Integer pageSize,
                                                       String sortDirection, String sortField) {
        LOGGER.info("Inside getBeneficiaryOfMerchants method");

        // default we are setting to added on desc sort
        Sort sort = Sort.by(Sort.Direction.DESC,"addedOn");
        if(sortField != null && sortDirection != null) {
            sort = Sort.by(Sort.Direction.fromString(sortDirection),sortField);
        }

        Pageable pageRequest = PageRequest.of(page-1, pageSize, sort);
        Page<Beneficiary> pageOfBeneficiaries = beneficiaryRepository.findAllByMerchantId(merchantId, pageRequest);

        List<BeneficiaryResponseDTO> benResonseDtoList = new ArrayList<BeneficiaryResponseDTO>();

        for( Beneficiary ben: pageOfBeneficiaries.getContent()) {
            benResonseDtoList.add(this.getBeneficiaryResponseDTO(ben));
        }
        ListBeneficiaryResponseDTO formattedListBen = new ListBeneficiaryResponseDTO(pageOfBeneficiaries.getTotalPages(),pageOfBeneficiaries.getTotalElements(),pageOfBeneficiaries.getNumber(),benResonseDtoList);
        return formattedListBen;
    }

為了編寫測試,我想,考慮到底層方法調用工作正常,這個方法會做錯什么。 好吧,我不確定,但將元素放入列表中可能會出現一些錯誤。

因此,我想編寫一個測試來確保列表 benResonseDtoList 中存在預期數量的元素。

以下是我嘗試過的 -

@Test
public void testGetBeneficiariesOfMerchant() throws Exception {

    Long merchantId = 2l;
    List<Beneficiary> beneficiaryList = new ArrayList<Beneficiary>();
    beneficiaryList.add(getBeneficiaryDto());
    beneficiaryList.add(getBeneficiaryDto());


    Page<Beneficiary> beneficiaries = new PageImpl<Beneficiary>(beneficiaryList); //But I am not sure how many entries are there in the page created.
Mockito.when(beneficiaryRepository.findAllByMerchantId(any(),any())).thenReturn(beneficiaries);
KeyManager keyManager = Mockito.mock(KeyManager.class);


ListBeneficiaryResponseDTO list = beneficiaryService.getBeneficiaryOfMerchants(merchantId,1,2, "DESC","addedOn");

如果 beneficiaryList 中的元素數量與 pageOfBeneficiaries 中的條目之間存在明顯的相關性,我可以對其進行測試。

如果我正確理解您的問題,您想知道getBeneficiaryOfMerchants() function 的測試場景,因為下划線功能正常工作。

對於給定的

MercerId, page, pageSize, sortDirection, sortField

ListBeneficiaryResponseDTO 將被修復,我們稱之為 ListBeneficiaryResponseDTO expectedList (您必須構建它,因為您已經知道正確的輸出)

因此,您應該比較以下內容:-

實際 Output:

ListBeneficiaryResponseDTO actualList =  beneficiaryService.getBeneficiaryOfMerchants(merchantId,1,2, "DESC","addedOn");

預期 Output: ListBeneficiaryResponseDTO 預期列表(已在上面定義)

比較兩個輸出: -

  1. 逐個字段比較actualListexpectedList

  2. 覆蓋 ListBeneficiaryResponseDTO 類的 Equals 方法(或者您可以使用 lombok.EqualsAndHashCode 來避免樣板代碼)並執行以下操作:- assertEquals(**actualList**, **expectedList**)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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