Как бороться с тестовыми данными в Junit? - PullRequest
6 голосов
/ 01 июня 2010

В процессе разработки TDD (Test Driven Development), как обращаться с тестовыми данными? Предположим, что по сценарию, проанализируем файл журнала, чтобы получить нужный столбец. Для сильного теста, Как мне подготовить данные теста? И правильно ли мне размещать такие файлы в файлах тестового класса?

Ответы [ 5 ]

15 голосов
/ 01 июня 2010

Например, Maven использует соглашение для структур папок, которое заботится о тестовых данных:

src
  main
    java           <-- java source files of main application
    resources      <-- resource files for application (logger config, etc)
  test
    java           <-- test suites and classes
    resources      <-- additional resources for testing

Если вы используете maven для сборки, вы захотите поместить ресурсы теста в нужную папкуЕсли ваше здание отличается чем-то другим, вы можете использовать эту структуру, поскольку она представляет собой нечто большее, чем просто соглашение maven, на мой взгляд, оно близко к «наилучшей практике».

2 голосов
/ 01 июня 2010

Другой вариант - макетировать ваши данные, исключая любую зависимость от внешних источников. Таким образом, легко тестировать различные условия данных без необходимости иметь несколько экземпляров внешних тестовых данных. Затем я обычно использую полноценные интеграционные тесты для тестирования легкого дыма.

2 голосов
/ 01 июня 2010

Кодируйте их в тестах так, чтобы они были близки к тестам, которые их используют, что делает тест более читабельным.

Создать тестовые данные из реального файла журнала. Напишите список тестов, предназначенных для написания, решите их один за другим и отметьте галочкой их после прохождения.

1 голос
/ 13 августа 2014
getClass().getClassLoader().getResourceAsStream("....xml");

внутри теста у меня сработало. Но

getClass().getResourceAsStream("....xml");

не сработало. Не знаю почему, но, возможно, это поможет другим.

0 голосов
/ 01 июня 2010

Когда мои тестовые данные должны быть внешним файлом - ситуации, которую я стараюсь избегать, но не всегда - я помещаю их в зарезервированный каталог тестовых данных на том же уровне, что и мой проект, и использую getClass().getClassLoader().getResourceAsStream(path) для прочитай это. Каталог с тестовыми данными - это не требование, а просто удобство. Но старайтесь избегать необходимости делать это; как указывает @philippe, почти всегда лучше иметь значения, жестко запрограммированные в тестах, там, где их можно увидеть.

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