Streng genommen eine Einheit Test wurde entwickelt, um die Funktionalität eines Stück Code zu testen, statt der Integration der Code mit einem äußeren Teil des Programms. Das Testen der Funktionalität des Lesens einer tatsächlichen Datei wäre ein Test Integration anstelle eines Komponententests. Ein Integrationstest ist auch wichtig, weil Sie sicherstellen möchten, dass Ihr Dateireader auf tatsächlichen Dateien funktionieren kann. Um jedoch sicherzustellen, dass der Code ausgeführt wird, können Sie auch einen Komponententest erstellen.
Um einen Komponententest zu erstellen, können Sie das Dateileser-Objekt überspionieren, um eine Dummy-Antwort (byte[]
oder einen anderen von der Schnittstelle bereitgestellten Typ) zurückzugeben. Dann können Sie Ihre POJOs füllen und Ihre Behauptungen ausführen, dass sich alles wie erwartet verhält.
So zusammenzufassen, sowohl eine Integrationstest und ein Unit-Test könnte eine gute Idee sein, aber ein Unit-Test ermöglicht es Ihnen, die Logik des Codes zu isolieren und zu testen.
Update:
Um Ihre aktualisierten Codebeispiel zu berücksichtigen, würde ich gehen über die CsvBeanReader
wie dieser spöttischen:
ICsvBeanReader mockedBeanReader = mock(CsvBeanReader.class);
Book book1 = new Book();
Book book2 = new Book();
Book book3 = new Book();
when(mockedBeanReader.getHeader(true))
.thenReturn(new String[]{"here", "is", "header"});
when(mockedBeanReader.read(Book.class, header, processors))
.thenReturn(book1)
.thenReturn(book2)
.thenReturn(book3);
Und jetzt haben Sie eine voll verspottet CsvBeanReader
Objekt. Sie können Assertionen in Ihren POJOs ausführen und sicherstellen, dass die Geschäftslogik Ihres Codes korrekt ist.
Vielen Dank. Ich habe eine Frage. Wenn der Dateileser eine Dummy-Antwort zurückgibt, was wird verspottet? Ich habe der Frage einen Beispielcode hinzugefügt. –
Sehr nett. Vielen Dank. –