2015-01-09 4 views
0

Почему плохая идея интегрировать тестовые утверждения в тестируемый класс?утверждения интеграции в тестируемый класс

Например, что-то вроде:

class SomeClass { 
    function add($a) { 
    return $a + 1; 
    } 

    function test_add($TestCase) { 
    $TestCase->assertEquals($this->add(1), 2); 
    $TestCase->assertEquals($this->add(2), 3); 
    } 
} 

, а затем некоторые рамки выполнения по всем test_ * функций, передавая их TestCase возражают

что плохого в таком подходе? Почему все фреймворки имеют тенденцию отделять код реализации и тестовые утверждения?

ответ

0

Моей первой мыслью был бы размер класса при этом. Я нашел в качестве эмпирического правила, что я пишу 3 строки тестового кода для каждой строки фактического кода. Таким образом, размер класса увеличится на 300%.

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

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

+0

спасибо. Подобные были мои первые мысли. Относительно организации. Для меня это намного проще при тестировании кода наряду с реализацией, чем поиск/запоминание кода тестирования для конкретной функции. – kakabomba

+0

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

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