2017-01-09 8 views
1

안녕하세요되어주고있다 Thsi는 제가 시도한 것입니다 :조롱 중첩 된 함수는 여기에 단위 테스트 케이스 를 작성하는 동안 내가 널 포인터 예외를 얻고 클래스 세부 NPE

@Test 
public void createDraft_newDraft() { 
    DraftCampaignActivity draftContoller = new DraftCampaignActivity(); 

    CreateDraftCampaignRequest request = createRequest(); 
    DraftCampaignDetails details = buildDraftDetails(); 
    if(draftCampaignI == null){ 
     System.out.println("sccdscscd"); 
    } 
    //ConvertionUtil action1 = PowerMockito.mock(ConvertionUtil.class); 
    //PowerMockito.when(action1.getDraftCampaignDetailsfromCreateDraftRequest(request)).thenReturn(details); 
    when(util.getDraftCampaignDetailsfromCreateDraftRequest(request)).thenReturn(details); 
    when(draftCampaignI.createDraftCampaign(details)).thenReturn(details); 




    CreateDraftCampaignResponse response = new CreateDraftCampaignResponse(); 
    draftContoller.createDraftCampaign(request); 
    response.setDraftCampaignId(details.getDraftId()); 
    Assert.assertEquals(response.getDraftCampaignId(),"ww"); 



} 

나는 NPE를 얻고 있습니다. 나는 Mockito와 다른 틀에서 초보자이다. 도와주세요!

답변

1

static 메서드를 조롱하려고 시도했는데 제대로 작동하지 않아이 NPE로 이어지는 실제 메서드가 호출되지 않기 때문에 작동하지 않습니다.

Powermock를 사용하여 static 방법을 조롱하려면 다음을 수행해야합니다

  1. 를 사용하여 테스트 케이스의 클래스 수준의 @RunWith(PowerMockRunner.class) 주석을.
  2. 테스트 케이스의 클래스 수준에서 @PrepareForTest(ClassThatContainsStaticMethod.class) 주석을 사용하십시오.
  3. PowerMock.mockStatic(ClassThatContainsStaticMethod.class)을 사용하여이 클래스의 모든 메소드를 모의합니다. How to mock a static method with Powermock에 대한

    @RunWith(PowerMockRunner.class) 
    public class MyTestClass { 
        @Test 
        @PrepareForTest(ConvertionUtil.class) 
        public void createDraft_newDraft() { 
         ... 
         PowerMockito.mockStatic(ConvertionUtil.class); 
         PowerMockito.when(
          ConvertionUtil.getDraftCampaignDetailsfromCreateDraftRequest(request) 
         ).thenReturn(details); 
         ... 
        } 
    

    자세한 내용 :

그래서 귀하의 경우, 당신은 뭔가를해야한다.

+0

안녕하십니까. 다시 방문해 주셔서 감사합니다. 그것은 한밤중과 같고 나는 이것에 머리를 터트 리고 있습니다. 나는 정적 방법을 조롱했다. 그러나 그것은 새로운 오류를주고 있습니다. 다음은 링크입니다. http://stackoverflow.com/questions/41554844/error-in-mocking-nested-calls 내 새로운 질문입니다. 내가 좋은 밤 잠을 자도록 도와주세요 !! – user3681970

+0

다른 질문의 행을'PowerMockito.mockStatic (...')에서 시작하는 것으로 바꾸십시오. –

+0

정적 메서드를 사용하면 안되는 중요한 조언이 누락되었습니다. 예를 들어 OOP의 주요 기능을 구현할 수 없기 때문입니다. 다형성. –