2013-08-06 5 views
2

В моем классе под тестированием определено несколько констант, и есть часть логики, которая зависит от значения этих констант.Различные постоянные значения для junit

В моем случае я создаю несколько партий из входного CSV-файла. Размер каждой партии определяется константой. Я создаю небольшой входной файл и передаю его в тестовый файл. Но поскольку файл очень маленький, он создает только одну партию.

Одним из очевидных решений является создание большего файла и передача его в тестовый файл. Но мне нужно создать действительно большой файл, например, 15 МБ. Другой подход заключается в том, что если я могу настроить константы на меньшие значения в тестовых случаях, что, безусловно, потребует взломанного подхода.

Я чувствую, что первое решение является правильным, но любые предложения?

+0

Чтобы ответить, как это должно быть сделано, требуется дополнительная информация, но в целом - с помощью API отражения вы можете «взломать» и изменить эти константы. Хотя это чрезвычайно опасно и, как правило, следует избегать, иногда можно использовать его в модульном тестировании. – amit

+1

Кроме того, вы всегда можете создать файл с мусором 15 МБ программно, он, вероятно, лучше проверит ваш компонент. – amit

+0

Это также вариант. За исключением того, что мне пришлось бы написать много макетных поведений для создания множества партий. – RandomQuestion

ответ

6

Вы можете изменить константу с помощью отражения, но тот факт, что вам нужно ее изменить, предполагает, что вы, вероятно, должны пересмотреть дизайн своего класса.

Как насчет передачи размера каждой партии в конструктор класса?

  • Это делает ваш класс более гибким для фактического использования (вы можете решить, на каком-то этапе, что размер должен увеличить/уменьшить или использовать различные размеры для различных случаев применения)
  • Вашего класса будет проверяемыми снова
+0

+1 редизайн класса - правильный путь – bowmore

+0

Существует ограничение на этот размер. Поэтому мне было интересно, следует ли мне исключать исключение, если предел клиента превышает или сбросить его до максимального предела. Вероятно, возврат к максимальному пределу и упоминание в javadoc об этом поведении более логичны. – RandomQuestion

+1

@Jitendra Да - документ в javadoc, каковы допустимые значения, и бросает исключение IllegalArgumentException, если клиент передает что-то еще. – assylias

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