Я новичок в модульном тестировании Junit и Mockito. Мне нужно выполнить модульное тестирование метода «processFiles (последняя папка с файлами)»
Когда я запускаю тест, я получаю исключение NullPointerException в «if (! This.studentService.isFileOk (data))».
Можете ли вы помочь мне понять, как я должен правильно тестировать этот метод. Заранее большое спасибо.
Это часть кода из метода processFiles:
@Stateless
public class ListFilesService{
@EJB
private transient StudentService studentService;
public void processFiles(final File folder)
{
File[] fileNames = folder.listFiles();
List<String> lines = new ArrayList<>();
try
{
List<String> l = readContent(file);
l.forEach(i -> lines.add(i));
String[] data = lines.get(0).trim().split(";");
if (!this.studentService.isFileOk(data))
{
LOG.warning(String.format("File not valid"));
}
else
{
studentService.storeStudents(lines);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
И вот как я пытаюсь протестировать свой метод processFile
public class TestCases
{
@Mock
ListFilesService listFilesService;
@Mock
public StudentService studentService;
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Test
public void testWrite2() throws IOException
{
final File tempFile1 = temporaryFolder.newFile("tempFile.txt");
final File tempFile2 = temporaryFolder.newFile("tempFile2.txt");
String[] data = {"LastName", "FirstName", "Age"};
listFilesService = new ListFilesService();
studentService = Mockito.mock(StudentService.class);
when(studentService.isFileOk(eq(data))).thenReturn(true);
FileUtils.writeStringToFile(tempFile1, "LastName;FirstName;Age" +
"\nxxx1;nnnn1;15", "UTF-8");
FileUtils.writeStringToFile(tempFile2, "LastName;FirstName;Age" +
"\nxxx2;nnnn2;19", "UTF-8");
listFilesService.processFiles(temporaryFolder.getRoot());
}