2015-02-09 3 views
1

Я создаю модульные тесты для диспетчера дисковых устройств, которые форматируют диски, управляют дисковыми разделами и создают логические тома и группы в Linux. Этот диспетчер дисков является классом в более крупном приложении. Мне, безусловно, придется создавать тесты, которые проверяют интеграцию (1) класса диспетчера дискового устройства и (2) команды и библиотеки ОС, используемые для выполнения операций с дисками.Тесты модулей должны высмеивать все внешние службы?

1) Были ли эти тесты классифицированы как единичные или интеграционные тесты? Они кажутся модульными тестами, потому что они проверяют только модуль моего приложения, но они также показывают интеграционные тесты, потому что они зависят от внешнего кода.

2) Стоит ли также издеваться над командами ОС и внешними библиотеками для создания изолированных модульных тестов?

Заранее спасибо.

+0

Что такое среда ОС? Короткий (почти бесполезный) ответ - «это зависит» - но существует ли установленный язык для среды ОС, в которой вы работаете? Если это так, моя рекомендация - принять конвенцию об окружающей среде для обозначения типов тестов - она ​​будет иметь наибольший смысл и быть наименее изумительной для следующего человека, который должен смотреть на код. –

+0

ОС Linux, я не знаю, есть ли в нем единый тестовый тест. Во всяком случае, я ожидаю, что ответ будет независимым от ОС. Это вопрос серой области в теории тестирования программного обеспечения? Чтение http://martinfowler.com/bliki/UnitTest.html, я начинаю верить в это. –

ответ

2

Интеграционные тесты проверяют, как работают два (или более) компонента real. Обычно компоненты имеют определенный API, и тесты проходят через него, чтобы обеспечить реализацию API. Единичные тесты проверяют только один блок (класс). Мы используем mocks для имитации «внешнего» поведения в модульных тестах.

Поэтому, когда вы тестируете свой компонент против реальной системы (ОС), это интеграционные тесты.

Стоит подготовить макет, чтобы проверить поведение класса независимо от реальной среды. Например, вы можете запустить эти модульные тесты после своих сборок (Continuous Integration) и проверить регрессию. В этом случае вы хотите работать довольно быстро и не иметь дело с реальной ОС.