2011-01-31 3 views
4

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

У меня есть класс, и мне нужно протестировать создание, вставку и удаление объектов этого класса. Если я пишу три отдельные тестовые функции, мне нужно дублировать коды инициализации в другой функции. На руке, если я поместил все тесты в одну тестовую функцию, это противоречит одному тесту на каждую функцию. Что мне делать?

Здесь ситуация:

tst_create() 
{ 
    createHead(head); 
    createBody(body); 
    createFoot(foot); 
} 

tst_insert() 
{ 
    createHead(head); 
    createBody(body); 
    createFoot(foot); 

    obj_id=insert(obj); //Also I need to delete obj_id somehow in order to preserve old state 
} 

tst_delete() 
{ 
    createHead(head); 
    createBody(body); 
    createFoot(foot); 

    obj_id=insert(obj); 

    delete(obj_id); 
} 

против

tstCreateInsertDelete() 
{ 
    createHead(head); 
    createBody(body); 
    createFoot(foot); 

    obj_id=insert(obj); 

    delete(obj_id); 
} 

ответ

4

фактор из дублирования в ваших тестах.

В зависимости от вашей тестовой среды может быть предусмотрена поддержка определения метода настройки, который вызывается перед каждым выполнением теста, и метода слежения, который вызывается после каждого теста.

Независимо от этого, вы можете извлечь обычный материал, чтобы повторить вызов только одной общей настройки.

Если вы сообщите нам, какой язык и тестовый фрейм вы используете, мы сможем дать более конкретные советы.

+0

C++ и Qt Framework. – metdos

+0

Я не могу больше помочь на C++ и Qt, но другие могут. –

6

Вместо «одного теста на каждую функцию» попробуйте подумать об этом как «Один аспект поведения для каждой функции».

Что добавляет объект? Как насчет удаления объекта? Почему они ценны? Как вы можете сказать, что вы их сделали? Напишите пример использования кода и почему это поведение ценно. Это станет вашим тестом.

Когда вы выяснили, какое поведение вас интересует, извлеките дубликат , только если это сделает тест более читаемым. TDD - это не только тестирование; это также о предоставлении документации и помогает вам думать об ответственности каждого элемента кода и дизайна этого кода. Тесты, вероятно, будут читаться намного больше, чем они написаны, поэтому читаемость должна быть первой.

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

+0

+1 для удобства чтения. –

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