Also fing ich an, Tests für unser Java-Spring-Projekt zu schreiben.
Was ich benutze, ist JUnit und Mockito. Es heißt, wenn ich die Option when () ... thenReturn () verwende, kann ich Dienste verspotten, ohne sie oder so zu simulieren. Ich möchte also Folgendes festlegen:
when(classIwantToTest.object.get().methodWhichReturnsAList(input))thenReturn(ListcreatedInsideTheTestClass)
Aber egal welche when-Klausel ich mache, ich bekomme immer eine NullpointerException, was natürlich Sinn macht, weil die Eingabe null ist.
Auch wenn ich versuche, eine andere Methode von einem Objekt zu verspotten:
when(object.method()).thenReturn(true)
Dort bekomme ich auch einen Nullpointer, da die Methode eine Variable benötigt, die nicht gesetzt ist.
Aber ich möchte when () .. thenReturn () verwenden, um diese Variable zu erstellen und so weiter. Ich möchte nur sicherstellen, dass, wenn eine Klasse diese Methode aufruft, egal was passiert, einfach true oder die obige Liste zurückgegeben wird.
Ist es ein grundsätzliches Missverständnis von meiner Seite oder stimmt etwas anderes nicht?
Code:
public class classIWantToTest implements classIWantToTestFacade{
@Autowired
private SomeService myService;
@Override
public Optional<OutputData> getInformations(final InputData inputData) {
final Optional<OutputData> data = myService.getListWithData(inputData);
if (data.isPresent()) {
final List<ItemData> allData = data.get().getItemDatas();
//do something with the data and allData
return data;
}
return Optional.absent();
}
}
Und hier ist meine Testklasse:
public class Test {
private InputData inputdata;
private ClassUnderTest classUnderTest;
final List<ItemData> allData = new ArrayList<ItemData>();
@Mock
private DeliveryItemData item1;
@Mock
private DeliveryItemData item2;
@Mock
private SomeService myService;
@Before
public void setUp() throws Exception {
classUnderTest = new ClassUnderTest();
myService = mock(myService.class);
classUnderTest.setService(myService);
item1 = mock(DeliveryItemData.class);
item2 = mock(DeliveryItemData.class);
}
@Test
public void test_sort() {
createData();
when(myService.getListWithData(inputdata).get().getItemDatas());
when(item1.hasSomething()).thenReturn(true);
when(item2.hasSomething()).thenReturn(false);
}
public void createData() {
item1.setSomeValue("val");
item2.setSomeOtherValue("test");
item2.setSomeValue("val");
item2.setSomeOtherValue("value");
allData.add(item1);
allData.add(item2);
}