2010-06-01 3 views
6

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

ответ

14

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, по моему мнению, это близко к «лучшей практике».

+0

Является ли это тестовым соглашением в Maven? – Joseph

+0

Maven упрощает процесс сборки приложений Java и широко использует соглашения, подобные структурам папок. Если проект соответствует этим соглашениям, то файлы сборки будут довольно маленькими, потому что maven «называет», что делать на основе файлов и папок, которые он видит. (просто вкратце) –

+0

ОК. Понимаю. Спасибо. – Joseph

2

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

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

2

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

0

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

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

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

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

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