Вы всегда можете проверить, существует ли файл, но это больше интеграционное тестирование, чем модульное тестирование.
Рекомендуемый подход было бы создать какой-то FileCreator
интерфейс, как так
public interface FileCreator {
void createFile(Date date);
}
Создайте свою реализацию, форматирует время, а затем модульного тестирования - проверить, что при вызове createFile
ваш файл действительно создан. Это должно быть просто.
Теперь, использовать это в своем классе, который создает файлы - позволяет предположить, что это выглядит так
public class FileCreationManager {
private final FileCreator fileCreator;
private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
private Future<?> taskHandle;
public FileCreationManager(final FileCreator fileCreator) {
this.fileCreator = fileCreator;
}
public void startFileCreation() {
taskHandle = executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
fileCreator.createFile(new Date());
}
}, 0, 5, TimeUnit.SECONDS);
}
public void stopFileCreation() {
taskHandle.cancel(false);
executorService.shutdown();
try {
executorService.awaitTermination(1, TimeUnit.MINUTES);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
Ваш модульного тестирования вы можете пройти в фиктивной реализации FileCreator
и у вас есть только проверить, что createFile
является с правом Date
.
Вы можете запустить поток создания в течение нескольких секунд и собрать Date
сек прошли в в Collection
- ваш следующий блок теперь необходимо проверить, что Date
s 5 секунд друг от друга, и что есть право их число.
Я бы высмеял объект, используемый для создания файла, и проверить, были ли вызваны функции создания с правильными аргументами. IMHO больше не является модульным тестом, если вам действительно нужно проверить файлы, созданные в файловой системе ... – ppeterka