Mockito NullPointerException
Folgte ich dem, was @hoaz vorgeschlagen. Allerdings bin ich immer nullpointer exception
@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)
}
}
In meinem Code ist es so:
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())
}
}
Ich auch feststellen, dass DAO null war, so dass ich dies getan habe(Nur um zu erwähnen, ich hab die unten, Schritt zu versuchen, ich kenne den Unterschied zwischen springUnit und Mockito oder xyz):
@Autowired
private SomeDao someDao;
@John B Lösung die mein problem gelöst. Jedoch möchte ich erwähnen, was nicht funktioniert für mich. Dies ist meine aktuelle unit-test
@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)
}
Verwiesen wird auf diese Frage :
Wie kann ich verspotte externen Methodenaufruf mit Mockito
Wie kann ich festlegen einer Eigenschaft auf eine ironisierte Objekt mit Mockito?
- Warum sind Sie spöttisch etwas, das Sie autowiring? Es riecht wie diese sollte entweder ein reines Feder-Stil, integration-test, oder ein reines mock test.
- Ich habe versucht zu tun, @Autowired Schritt zu, da war ich mit Ausnahme von NullPointer, aber es läuft in Ausnahme auch danach. Ich sehe, dass, wenn die
someDao.findMe(someObject.getId.toString())
ausführen, löst er NICHT mein MockDao return-Anweisung, sondern versucht Sie zu bewertensomeObject.getId.toString()
. Wenn ich println im test fürsomeDao.findMe
es tut Rückgabe der Sammlung. Ich habe auch überprüft die debuggingsomeDao
ist bereits Eigentum in generalConfigService. Also nicht sicher, warum es bewerten und nicht nur die Rückkehr meiner Sammlung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht verspottet das Verhalten von
getId
imexternalDependencyObject
daher ist es die Rückkehrnull
und geben Sie die NPE, wenntoString()
ist aufgerufen, dienull
.Benötigen Sie eine
when(externalDependencyObject.getId()).then...