2014-09-23 3 views
1

Я пришел в форму JUnit и недавно начал с проекта, где начал использовать TestNG.
Одна из особенностей, которую TestNG имеет то, что вы можете определить, зависит ли ваш тест от других тестов.Тестирование модулей: Является ли зависимость между тестами хорошей идеей?

Это удивительно, поскольку я всегда думал, что тесты должны быть независимыми. Они должны создавать свои собственные данные, утверждать и двигаться дальше. Мне это кажется странным.

Я хотел собрать обратную связь, если это хорошая идея.

+0

Когда вы тестируете многоступенчатый рабочий процесс, это может быть более чистой альтернативой сбросу длинного сценария в одном методе тестирования. Аналогично для тестов UI, которые требуют входа и навигации. – chrylis

+0

как насчет наличия абстрактного модульного тестового класса, который делает это в отдельных функциях? – daydreamer

+0

Это означает, что каждый последующий тест теперь требует шаблона. – chrylis

ответ

1

На мой взгляд, тесты должны быть независимыми. Как сказал @daydreamer, хорошей практикой является использование некоторого кода для использования/совместного использования кода в абстрактном классе для упрощения тестового кода. Давайте рассмотрим тестирование CRUD, я думаю, что лучший способ проверить такую ​​вещь: проверить создание в методе настройки, прочитать и обновить тест в обычных тестах и, наконец, протестировать удаление в методе очистки. Результат теста не может зависеть от ресурса (например, данных в базе данных).

1

Я не использую testNG, но я думаю, что эта функция может быть полезна иногда.

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

Однако иногда вы знаете, что если ваша программа не может выполнить простую задачу A, она не сможет выполнить более сложную задачу B. Поэтому, если тест для A терпит неудачу, вы знаете, что тест для B также потерпит неудачу. Например, я не думаю, что могу разобрать сложную строку json (task/test B), если моя программа даже не может разобрать '{"a":1}' (задача/тест A).

Если у вас есть регрессия, которая делает задачу невозможной, все более сложные операции, такие как B, потерпят неудачу, и причина не будет очевидна с первого взгляда (отчет покажет X неудачные тесты, тогда как фиксация только одна решит все) , Если ваш код содержит информацию о зависимостях, вы сразу узнаете, какой тест вызывает проблему (и в тестовой среде не будут выполняться тесты, которые, несомненно, потерпят неудачу).

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