2013-03-20 4 views
1

Если у вас есть цикл, который создает текстовые файлы каждые 5 секунд и называет его после созданной временной метки, можете ли вы создать тест junit, чтобы узнать, было ли оно создано? как бы вы проверили?junit тесты для проверки создания файла

спасибо за вашу помощь

+1

Я бы высмеял объект, используемый для создания файла, и проверить, были ли вызваны функции создания с правильными аргументами. IMHO больше не является модульным тестом, если вам действительно нужно проверить файлы, созданные в файловой системе ... – ppeterka

ответ

0

Я бы издеваться создание с помощью Mockito. И проверьте, вызван ли метод create и какое имя файла используется.

0

Вы всегда можете проверить, существует ли файл, но это больше интеграционное тестирование, чем модульное тестирование.

Рекомендуемый подход было бы создать какой-то 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 секунд друг от друга, и что есть право их число.

Смежные вопросы