2

Powermockを使用して次のように配列リストをモックしようとしています

MockDao クラス

 PowerMockito.mockStatic(DailyReceiptsAndExceptionsDetailsDao.class);
    PowerMockito.mockStatic(UtilityFunctions.class);
    DailyReceiptsAndExceptionsExport dailyExceptionsExport = Mockito.mock(DailyReceiptsAndExceptionsExport.class);
    List<DailyReceiptsAndExceptionsDetailsGridDto> resultList = getDailyExceptions(inputDto);
    try{
        PowerMockito.whenNew(DailyReceiptsAndExceptionsExport.class).withArguments(Mockito.any(DailyReceiptsAndExceptionsDetailsInputDto.class)).thenReturn(dailyExceptionsExport);
        Mockito.when(DailyReceiptsAndExceptionsDetailsDao.getDailyReceiptsAndExceptions(Mockito.any(DailyReceiptsAndExceptionsDetailsInputDto.class))).thenReturn(resultList);
        Mockito.when(UtilityFunctions.processReportSchedule(scheduleId, jobId,dailyExceptionsExport,(List<DailyReceiptsAndExceptionResultDTO>)Mockito.any(), null, null)).thenReturn(true);
}catch(Exception e){
    }

次のクラスのテストを作成する必要があります。

    public static Response getOutboundAvgCubeAndWeightUtilization(
        @QueryParam("dc") String dc,
        @QueryParam("asn") String asn,
        @QueryParam("sortBy") String sort,
        @QueryParam("isExport") boolean isExport,
        @QueryParam("fileType") String fileType,
        @QueryParam("scheduleId") BigDecimal scheduleId,
        @QueryParam("jobId") BigDecimal jobId)  {

    ResponseDTO responseDto = new ResponseDTO();

    DailyReceiptsAndExceptionsDetailsInputDto inputDto = new DailyReceiptsAndExceptionsDetailsInputDto ();
    inputDto.setAsn(asn);
    inputDto.setDc(dc);
    inputDto.setSortBy(sort);
    inputDto.setFileType(fileType);
    inputDto.setExport(isExport);
    String filePath = "";
    try {
        DailyReceiptsAndExceptionResultDTO resultDto = DailyReceiptsAndExceptionsDetailsBusinessManager.getInstance().manageDailyReceiptsAndExceptionsDetails(inputDto);
        List<DailyReceiptsAndExceptionResultDTO> resultsList = new ArrayList<DailyReceiptsAndExceptionResultDTO>();
        resultsList.add(resultDto);
        if(scheduleId != null) {
            boolean responseStatus = UtilityFunctions.processReportSchedule(scheduleId, jobId, new DailyReceiptsAndExceptionsExport(inputDto), resultsList, null,null);

            responseDto.setResult(Boolean.toString(responseStatus));

            return CommonUtil.convertResponseToJson(responseDto);
        } 
   }

私のテストクラスは次のとおりです。

   @Test
public void testGetOutboundAvgCubeAndWeightUtilization_4()
    throws Exception {
    String dc = "5854";
    String asn = "*";
    String sort = "SKU";
    boolean isExport = false;
    String fileType = "";
    BigDecimal scheduleId = new BigDecimal(100);
    BigDecimal jobId = new BigDecimal(100);
    DailyReceiptsAndExceptionsDetailsInputDto inputDto = new DailyReceiptsAndExceptionsDetailsInputDto ();
    inputDto.setAsn(asn);
    inputDto.setDc(dc);
    inputDto.setSortBy(sort);
    inputDto.setFileType(fileType);
    inputDto.setExport(isExport);
    DailyReceiptsAndExceptionsDetailsMockDAO.mockgetDailyExceptions(inputDto, scheduleId, jobId);
    Response result = DailyReceiptsAndExceptionsDetailsService.getOutboundAvgCubeAndWeightUtilization(dc, asn, sort, isExport, fileType, scheduleId, jobId);
    String output = result.getEntity().toString();      
    assertEquals(true,output.contains("\"result\": \"true\""));
}

テストケースを実行すると、リストのモックが正しくないと思われるため、エラーがスローされました。

このテストシナリオを実行する方法を誰か教えてください....

4

2 に答える 2

3

あなたのモックは問題ないようです。

行のため、JUnitはテストに失敗しています

assertEquals(true,output.contains("\"result\": \"true\""));

失敗しています: これは、文字列outputにテキストが含まれていないことを意味します"result": "true"

おそらく、何が間違っているかを理解する 1 つの方法は、assertEquals()呼び出しの前に output の値を出力するか、デバッガーを使用して output の値を確認することです。

補足として、assertEquals(true, <condition>)非常に冗長なので、代わりに使用できますassertTrue(<condition>)

于 2013-09-26T19:13:04.133 に答える
2

あなたのコメントによると、テストは単に失敗しています。(AssertionErrors は、テストが失敗したことを示す JUnit の方法です。)

Hamcrestを使用すると、より適切なエラー メッセージが表示される可能性があります。したがって、コードの最後の 2 行を変更する必要があります。

assertThat(result.getEntity(), hasToString(containsString("\"result\": \"true\"")));

とのいくつかの静的インポートを追加org.hamcrest.MatcherAssert.assertThatorg.hamcrest.Matchers.*ます。

新しいエラー メッセージは、エラーを見つけるのに役立つ場合があります。

于 2013-09-25T19:35:59.657 に答える