2015-06-17 5 views
0

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

Как лучше всего написать тесты, имеющие зависимости? Возьмем простой пример, например файловую систему, которая имеет метод Create() и Delete(), который вы хотите протестировать. Для метода Delete() необходимо, чтобы файл существовал для его удаления, и как он удовлетворяет этому условию? Вызов Create() приведет к зависимости. Точно так же, что если метод Create() должен сбой, если файл уже существует? Тогда действительный тест должен был бы сначала вызвать Delete(), чтобы убедиться, что файл уже не существует.

Есть ли способ сделать условный SetUp и TearDown в зависимости от того, какой тест выполняется для решения этой проблемы? Или должен ли сам тест быть тестом CreateAndDelete, который делает оба?

ответ

1

Не зависит от другого теста, не означает, что вы не можете использовать другие методы в классе, который вы тестируете. Поэтому для testDelete() вы можете создать файл, а затем удалить его. Для testCreateFailOnDuplicate() вы можете создать файл, а затем попытаться создать его снова, подтвердив, что он сделал ошибку.

Что вы не хотите делать, это написать тест testCreate(), а затем тест testDelete(), который предполагает, что тест testCreate() уже запущен - это плохая форма, плюс не все тестовые жгуты гарантируют прогностический порядок испытаний.

Надеюсь, это поможет.

+0

well put, спасибо – snappymcsnap

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