복붙노트

[SPRING] Mockito NullPointerException

SPRING

Mockito NullPointerException

@hoaz가 제안한 것을 따랐다. 그러나 nullpointer 예외가 나타납니다.

@RunWith(MockitoJUnitRunner.class)
public class GeneralConfigServiceImplTest  {

@InjectMocks private GeneralConfigService generalConfigService;
@Mock private SomeDao someDao;
@Mock private ExternalDependencyClass externalDependencyObject 

@Test
public void testAddGeneralConfigCallDAOSuccess() {
    when(someDao.findMe(any(String.Class))).thenReturn(new ArrayList<String>(Arrays.asList("1234")));

    //println works here, I am able to get collection from my mocked DAO

    // Calling the actual service function
    generalConfigService.process(externalDependencyObject)
    }
}

내 코드에서는 다음과 같습니다.

import com.xyz.ExternalDependencyClass;

public class  GeneralConfigService{

private SomeDao someDao;

public void process(ExternalDependencyClass externalDependencyObject){

// function using Mockito 
Collection<String> result = someDao.findMe(externalDependencyObject.getId.toString())
    }
}

나는 또한 DAO가 널 (null)이라는 것을 알아 냈다. (언급하기 위해, 나는 봄날 단위와 모치토 또는 xyz의 차이점을 알고있다.

@Autowired
private SomeDao someDao;

@ 존 B 솔루션은 내 문제를 해결했습니다. 그러나 나는 나를 위해 일하지 않았던 것을 언급하고 싶다. 이것은 업데이트 된 단위 테스트입니다.

@Test
public void testAddGeneralConfigCallDAOSuccess() {
    /*
    This does not work
    externalDependencyObject.setId(new ExternalKey("pk_1"));
    // verify statement works and I thought that the class in test when call the getId 
    // it will be able to get the ExternalKey object
    //verify(externalDependencyObject.setId(new ExternalKey("pk_1")));
    */

    // This works
    when(externalDependencyObject.getId()).thenReturn(new ExternalKey("pk_1"));
    when(someDao.findMe(any(String.Class))).thenReturn(new ArrayList<String>(Arrays.asList("1234")));

    ....
    // Calling the actual service function
    generalConfigService.process(externalDependencyObject)
    }

이 질문에 참조 된 :

Mockito를 사용하여 외부 메소드 호출을 조롱하는 방법

Mockito를 사용하여 조롱 된 객체에 속성을 설정하려면 어떻게해야합니까?

해결법

  1. ==============================

    1.externalDependencyObject에서 getId의 동작을 조롱하지 않았으므로 null을 반환하고 해당 null에서 toString ()이 호출 될 때 NPE를 제공합니다.

    externalDependencyObject에서 getId의 동작을 조롱하지 않았으므로 null을 반환하고 해당 null에서 toString ()이 호출 될 때 NPE를 제공합니다.

    when (외부 Dependency Object.get Id ())가 필요합니다. 그렇다면 ...

  2. from https://stackoverflow.com/questions/24072579/mockito-nullpointerexception by cc-by-sa and MIT license