Как структурировать код java.io.File для поддержки тестирования JUnit? - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь настроить некоторые начальные тесты для приложения JavaFX, но, в частности, я хочу попробовать и протестировать компонент TreeView, и мне интересно, как лучше изолировать доступ к файловой системе, чтобы он мог бытьпротестировано (без зависимости от моей собственной файловой системы).Это проект, который я пытаюсь протестировать: https://github.com/mfearby/magnificat (на данный момент это очень простая вещь, и все, что он делает, это показывает TabPane с некоторыми TreeViews, указывающими на файловую систему).

Когда вы изменяете выбранную вкладку, она записывает в INI-файл, чтобы при загрузке приложения она могла восстановить эти вкладки.Поэтому я бы хотел проверить, работает ли это, но это будет зависеть от моей собственной структуры файловой системы.Единственное тестирование, которое я когда-либо проводил, - это RedGate SQL Test, поэтому я никогда не тестировал приложение с графическим интерфейсом, поэтому, пожалуйста, прости вопрос новичка.

Должен ли я каким-то образом изменить свой класс FileTreeItem, который использует java.io.File.listFiles (), чтобы он использовал виртуальную файловую систему при тестировании (возможно, с Jimfs)?Если я сделаю это, как мне изменить мой класс, чтобы он использовал Jimfs при тестировании, но java.io.File, когда не в тестировании?Должен ли я установить глобальную переменную (eek!) И действовать соответственно в моем классе FileTreeItem?Это звучит ужасно, но я ломаю голову, просто удивляясь, как лучше всего проверить доступ к файловой системе, не создавая абсолютную мерзость.

Правильно ли даже изменить код приложения таким образом, чтобы приспособить его к инструменту тестирования (не считая хороших методов кодирования в целом), или же это должна быть сфера тестирования, чтобы выполнить всю подделку, чтобы получитьприложение для работы в тестируемом режиме?

Любые советы или указатели на «правильный путь», чтобы сделать это было бы очень полезно.

Спасибо.

1 Ответ

0 голосов
/ 11 июня 2018

Спросите себя, что такое юнит-тестирование.

Вы на самом деле юнит-тестирование записи в файл?Зачем?Вам не следует тестировать JVM, но следует верить, что он уже был протестирован.

Так что, если нет, то что вы тестируете?

Формат файла?Т.е. то, что ты пишешь, будешь читать и пониматьЭта часть может быть подвергнута модульному тестированию с использованием взамен ByteArrayOutputStream и ByteArrayInputStream, поэтому проведите рефакторинг кода, чтобы можно было проверить логику записи / чтения с использованием потоков байтов при модульном тестировании, нофайловые потоки при запуске кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...