2015-08-15 2 views
1

У меня есть функция C++, называемая copyMyFile(string src, string dest), которая просто копирует файл src в пункт назначения. Теперь мне нужно написать единичный тест для этой функции. Поскольку я никогда не писал модульный тест, я не уверен, что он должен включить.Единичный тест для функции копирования

Я имею в виду в методе модульного тестирования test_copyMyFiles(), я должен только позвонить в метод copyFiles() с некоторыми параметрами и все? Или я должен сделать несколько других сотрудников для того, чтобы модульный тест был полным?

+0

Ситуации, о которых нужно беспокоиться: пустые имена файлов; одно и то же имя файла дважды; неверные имена файлов. Что нужно проверить: копия файла идентична оригиналу; что происходит, когда на копии недостаточно места на диске; Отчет об ошибках; что произойдет, если местом назначения является каталог, а не имя файла. Просто случайные мысли с головы. –

+0

спасибо за ответ. позвольте мне задать еще одну вещь. Чтобы вызвать copyMyFile, мне сначала нужно иметь некоторый файл, поэтому, полагаю, в методе test_copyMyFiles() мне нужно сначала создать файл. Если у меня есть функция createMyFile(), могу ли я использовать ее в своем модульном тесте? или не рекомендуется использовать один пользовательский модуль при модульном тестировании другого пользовательского модуля? – mkd156

+0

Грубо, если вы уже тестировали код создания файла, он должен быть в порядке, чтобы использовать его во время тестирования кода копирования файлов (при условии, что он прошел). То, что было бы не так хорошо, - это модульное тестирование кода копирования файлов и обнаружение на самом деле ошибки в коде создания файла, что может привести к путанице. Таким образом, обязательно используйте единичные тесты, которые используют надежный (проверенный) код, но не используют ненадежный (непроверенный) код. Это означает, что вам нужно создать список зависимостей, и вы не можете позволить себе циклы в списке зависимостей. –

ответ

3

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

Ситуации, о которых нужно беспокоиться, включают: пустые имена файлов; одно и то же имя файла дважды; неверные имена файлов. Что нужно проверить: копия файла идентична оригиналу; что происходит, когда на копии недостаточно места на диске; Отчет об ошибках; что произойдет, если местом назначения является каталог, а не имя файла.

Для того, чтобы позвонить в copyMyFile, я в первую очередь необходимо иметь какой-то файл, так что я думаю, в test_copyMyFiles() методе нужно создать файл первым. Если у меня есть функция createMyFile(), могу ли я использовать ее в своем модульном тесте? Или не рекомендуется использовать один пользовательский модуль при модульном тестировании другого пользовательского модуля?

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

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