I am trying to write Junits for webservices.The webservice is implemented via 3 layers.
Webservice -> Implementation layer -> Dao layer.
Implementation layer actually converts DAO Object to business object and passes that back to the service.
My aim is to write Junits for the service layer. Now, to achieve this I am mocking the values in the implementation layer using @Mock and @InjectMocks as the implementation layer is using spring annotated fields. But I get a null pointer exception everytime I test. Below are the code
Service Layer
@Override
public FicheSolvaDetailDTO consulterFicheSolvabiliteTriennale(Long numFicheSolva) throws MetierException, TechniqueException {
try {
LOGGER.info("Consultation de la fiche de solvabilité triennale n° " + numFicheSolva);
return boToMessageConverter.convertFicheSolvabiliteDetaillee(manager.consulterFicheSolvabiliteTriennale(numFicheSolva));
} catch (com.accord.contrat.business.exception.MetierException e) {
throw new MetierException(e.getMessage(), e);
} catch (com.accord.contrat.business.exception.TechniqueException e) {
throw new TechniqueException(e.getMessage(), e);
}
}
This then goes to the next layer.
@Override
public FicheSolvaDetailDTO consulterFicheSolvabiliteTriennale(Long numFicheSolva) throws MetierException, TechniqueException {
try {
LOGGER.info("Consultation de la fiche de solvabilité triennale n° " + numFicheSolva);
return boToMessageConverter.convertFicheSolvabiliteDetaillee(manager.consulterFicheSolvabiliteTriennale(numFicheSolva));
} catch (com.accord.contrat.business.exception.MetierException e) {
throw new MetierException(e.getMessage(), e);
} catch (com.accord.contrat.business.exception.TechniqueException e) {
throw new TechniqueException(e.getMessage(), e);
}
}
Now comes the DAO Layer which I am not posting.
Test Class:
@RunWith(MockitoJUnitRunner.class)
public class SolvabiliteWSImplTest {
@InjectMocks
private static SolvabiliteWSImpl mockedSolvabiliteWSImpl;
private static FicheSolvabiliteDetailBO ficheSolvabiliteDetailBO;
@Mock
IFicheSolvaManager managera;
@Mock
BOToMessageConverter boToMessageConverter;
@Mock
MessageToBOConverter messageToBo;
@Before
public void initMocks(){
MockitoAnnotations.initMocks(this);
}
@Before
public void setUp() throws MetierException, TechniqueException{
ficheSolvabiliteDetailBO = new FicheSolvabiliteDetailBO();
ficheSolvabiliteDetailBO.setCodeSituationFamilialeSouscripteur("1");
ficheSolvabiliteDetailBO.setCodeSituationLocativeFoyer("1");
ficheSolvabiliteDetailBO.setNumCommercant(705l);
ficheSolvabiliteDetailBO.setNumEngagement(44686301l);
ficheSolvabiliteDetailBO.setNumFicheSolva(138553l);
when(managera.consulterFicheSolvabiliteTriennale(138553l)).thenReturn(ficheSolvabiliteDetailBO);
}
@Test
public void testConsulterFicheSolvaDetailDTO() throws MetierException, TechniqueException{
long numFicheSolve = 138553l;
assertNotNull(mockedSolvabiliteWSImpl.consulterFicheSolvabiliteTriennale(numFicheSolve));
}
But it is not mocking the value, as in
when(managera.consulterFicheSolvabiliteTriennale(138553l)).thenReturn(ficheSolvabiliteDetailBO);
it should return me ficheSolvabiliteDetailBO when the above method is called. But the function further goes inside this method and then gives me null pointer exception which means it is not mocking?
Please suggest a possible way to test.
Aucun commentaire:
Enregistrer un commentaire