В процессе разработки TDD (Test Driven Development), как работать с тестовыми данными? Предполагая, что сценарий, проанализируйте файл журнала, чтобы получить нужный столбец. Для сильного теста Как подготовить тестовые данные? И правильно ли мне найти такие файлы для файлов тестовых классов?Как справиться с тестовыми данными в Junit?
ответ
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, по моему мнению, это близко к «лучшей практике».
Жесткий код их в тестах, чтобы они были близки к тестам, которые их используют, делая тест более читаемым.
Создайте тестовые данные из реального файла журнала. Напишите список тестов, которые должны быть написаны, обрабатывайте их один за другим и отмечайте их, как только они пройдут.
Другим вариантом является измельчение данных, исключающее зависимость от внешних источников. Таким образом, легко проверить различные условия данных, не имея нескольких экземпляров внешних тестовых данных. Затем я обычно использую полноценные интеграционные тесты для легкого тестирования дыма.
Когда мои тестовые данные должны быть внешним файлом - ситуация, которую я пытаюсь избежать, но не всегда - я помещаю ее в зарезервированный каталог тестовых данных на том же уровне, что и мой проект, и использую getClass().getClassLoader().getResourceAsStream(path)
для чтения Это. Каталог тестовых данных не является требованием, просто удобство. Но старайтесь избегать этого; как указывает @philippe, почти всегда лучше иметь значения, жестко закодированные в тестах, прямо там, где вы можете их видеть.
getClass().getClassLoader().getResourceAsStream("....xml");
внутри испытания работало для меня. Но
getClass().getResourceAsStream("....xml");
не работал. Не знаю почему, но, возможно, это помогает некоторым другим.
Является ли это тестовым соглашением в Maven? – Joseph
Maven упрощает процесс сборки приложений Java и широко использует соглашения, подобные структурам папок. Если проект соответствует этим соглашениям, то файлы сборки будут довольно маленькими, потому что maven «называет», что делать на основе файлов и папок, которые он видит. (просто вкратце) –
ОК. Понимаю. Спасибо. – Joseph