JAVA тест maven чистой установки не завершает итератор - PullRequest
0 голосов
/ 28 марта 2020

У меня есть простой скрипт, который читает файл:

 /**
 * Takes a txt file with all songs listed in music directory
 * and saves this to the songs database
 */
public void rebuildFromFilelist() {
    final List<Song> songs = new ArrayList<>();

    try {
        final Scanner sc = new Scanner(new File(songsfile));
        sc.useDelimiter("\r?\n|\r");
        sc.forEachRemaining(l -> getSongFromLine(songs, l)); //function constructs a Song object

    } catch (final Exception e) {
        log.error("Error in processing file: {}", songsfile);
        e.printStackTrace();
    }

    songs.forEach(song -> log.debug(song.toString())); 

    songRepository.saveAll(songs);
}

Затем у меня есть тест:

@RunWith(SpringRunner.class)
@SpringBootTest
class SongRepositoryServiceTest {


@Autowired
private SongRepositoryService songRepositoryService;

@Test
@DisplayName("Rebuild library from file")
void RebuildLibraryWithFile() {
    songRepositoryService.rebuildLibraryWithFile();
    final List<Song> songs = songRepositoryService.findByCategory(Song.SongCategory.SONG);
    final List<Song> others = songRepositoryService.findByCategory(Song.SongCategory.OTHER);

    assertFalse(songs.isEmpty());
    assertFalse(others.isEmpty());
}
}

Файл, который я обрабатываю, имеет длину около 620 элементов. Первые 400 из категории SONG, остальные из категории ДРУГОЙ.

Когда я запускаю тест из Intellij, тест завершается успешно. Однако, если я запускаю его во время чистой установки mvn, он обрабатывает только первые 155 элементов и останавливается (таким образом, проваливая второе утверждение).

Почему это? Как я могу это исправить или даже отладить?

С уважением,

Barbet

РЕДАКТИРОВАТЬ: провальный тест только сообщает об этом, без ошибок или следов стека:

-------------------------------------------------------------------------------
Test set: com.gsm.GsmWeb.service.SongRepositoryServiceTest
-------------------------------------------------------------------------------
Tests run: 6, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.161 s <<< FAILURE! - in com.gsm.GsmWeb.service.SongRepositoryServiceTest
com.gsm.GsmWeb.service.SongRepositoryServiceTest.RebuildLibraryWithFile  Time elapsed: 0.532 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <false> but was: <true>
    at com.gsm.GsmWeb.service.SongRepositoryServiceTest.RebuildLibraryWithFile(SongRepositoryServiceTest.java:88)

1 Ответ

1 голос
/ 29 марта 2020

Кажется, что некоторые проблемы со сборкой maven связаны с итератором java Scanner. Я не мог отладить это, поскольку это было очень плохо. Я решил проблему, заменив

Files.lines(new File(songsfile).toPath()).forEach(l -> getSongFromLine(songs, l));

Теперь все работает отлично.

...