TDD кто сможет поучить?

craz

Нестандартное звание
Задача:
Написание парсера css
Имеется:
PhpUnit
Netbeans(с ним я насколько понимаю легче создавать тесты)

Первый вопрос: С чего начинать?

Мой ответ:
Надо написать тесты таких функций(Кстати в каркасе класса их прописывают? Если да то как?)
isFileCss
getFileCss
parseFileCss

вот вроде и весь ответ мой. Дальше ступор. Как писать такие тесты?



P.s. Задача не на миллион долларов.) То есть можно любую другую сформулировать. Но мне как-то вот эта сейчас интереснее что ль...
 

Redjik

Джедай-мастер
craz
посмотри примеры популярных фв

ЗЫ. кстати, после последней обновы у меня phpStrom перестал PHPUnit видеть, кэши сбрасывал... у кого-нибудь было?
 

craz

Нестандартное звание
Я смотрел, там все типа есть уже.
Люди как то дошли до этого. У них есть какие-то определенные устоявшиеся навыки. У меня их нет.
Я хочу сам пройти путь.
 

craz

Нестандартное звание
Ну это я без форума нагуглил еще года два назад) Именно потому что там мне многое не понятно я здесь и задал вопрос.

Up:
Кстати как бы то не было http://www.smartyit.ru/php/86 это будет проще для понимания...

P.s. Что смущает, так это то, что уровень нубовопросов зашкаливает и в некоторых аж по 15 страниц ответов. А такой вроде вопрос интересный... его почему-то помочь решить предлагают через сторонние ресурсы
 

craz

Нестандартное звание
Мне не принципиальна данная задача. Но это нормальная бытовая предметная область со своими закавыками и проблемами.
Да функция должна просто определять css это или нет.

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

И вот тут то и начинаются принципиальные вопросы которые не решаются в манах.
а) мне писать каркас класса?
б) как должен выглядеть этот первый тест
в) какие ассерты должны быть в классе
/**
* @assert что тут писать
**/
 

craz

Нестандартное звание
каркас класса(псевдокод), его вообще надо писать?

PHP:
class ParseCss{
    /**
    * @assert (test.php) == 0
    * @assert (test.css) == 1
    **/
    function isFileCss(){
       /*Сюда что-то пишется? Какая-то логика?*/
       return true;
    }
    /*тут асерты*/
    function getFileCss($filename){
    /*    сюда что пишется?*/
    }
    /*тут асерты*/
    function parseFileCss(){
    /*    сюда что пишется?*/
    }
}
Дальше насколько я понимаю я создаю тест этого класса, он если я правильно прописал все асерты создаст мне кучку методов, которые у меня не должны проходить. И я должен минимальными изменениями класса заставить проходить все тесты.
Кстати вот это должно мне кажется выглядеть как-то по-другому, если мы возвращаем бул
PHP:
/**
* @assert (test.php) == 0
* @assert (test.css) == 1
**/
 

craz

Нестандартное звание
все я понял, тебя интересуют только тесты ... мне нужно больше читать на русском...
итак, либо ты пишешь методы проверки, либо @assert... это одно и тоже на сколько я понимаю...

PHP:
/**
 * @assert (0, 0) == 0
 */
public function add($a, $b)
{
    return $a + $b;
}
These annotations are transformed into test code such as

PHP:
/**
 * Generated from @assert (0, 0) == 0.
 */
public function testAdd() {
    $o = new Calculator;
    $this->assertEquals(0, $o->add(0, 0));
}
phpunit.annotations
Издеваешься да?)
Я ЧИТАЛ ЭТО И ПЕРЕЧИТЫВАЮ РАЗ В ПОЛТОРА, ДВА МЕСЯЦА! - это по-русски)

Короче,
Ragazzo,
у меня правильное впечатление, что пока не напишешь 100500 тестов без TDD, в ту сторону смотреть рано? Или все таки можно?
 

craz

Нестандартное звание
Ты сколько слов из каждого моего поста читаешь прежде чем отвечаешь? Или построчно считываешь, или есть некий алгоритм отбора случайных фраз из поста?)))
 

craz

Нестандартное звание
чесно не издеваюсь...
Тогда еще раз, мне не надо рассказывать как писать тесты исходя из манов. Расскажи если знаешь методику написания тестов с применением разработки через тестирование. Если не знаешь, давай или будем думать вместе как решить задачу, повторюсь с потолка притянутую, но от того не менее интересную(глубокое имхо), или давай послушаем кого-нибудь, может все таки уровень и желание у кого-то все таки присутствует, чтобы четко и ясно показать методику.

Я не решаю задачу написания калькулятора, такие тесты я писал. Они пишутся просто, это слишком просто. На них не возможно разобраться.
 

Ragazzo

TDD interested
Кто-то стер половину топика чтоли?
craz
сложную систему полностью тестами не покроешь, только ключевые части, а то будет куча тестов просто с моками. Я вообще тесты через нетбинс генерю потом подправляю немного.
у меня правильное впечатление, что пока не напишешь 100500 тестов без TDD, в ту сторону смотреть рано?
в какую ту?
 

craz

Нестандартное звание
Кто-то стер половину топика чтоли?
craz
сложную систему полностью тестами не покроешь, только ключевые части, а то будет куча тестов просто с моками. Я вообще тесты через нетбинс генерю потом подправляю немного.

в какую ту?
в сторону TDD
У тебя же как я вижу прогресс в подписи раньше было tdd infected вроде) - поэтому спрашиваю у тебя)

P.s. Да топик потерли...
 

Ragazzo

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

craz

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

WMix

герр M:)ller
Партнер клуба
я поудалял все, посчитав что не по теме...

разработка через тестирование, я представляю себе так.
если есть требования - можно написать тест
Я Даже представляю их себе, написал тест, написал функцию, тест не прошел попровил функцию и так далее. У меня прост не складывается в голове именно практика...
или еще правильней, обговорили с другим разработчиком/клиентом/управляющим фьючер, договорились о простых вещах, к примеру: "если пришлю id которого нет должно произойти то и то.."
после описал это " то и то" в тестах... а после пишешь внутренности
просто покрывать весь код тестами мне кажется глупостью, это можно делать, но важнее проверить то что обязательно должно происходить, или то на что ты хочешь положиться...

в String:getFileCss(String file_name) вижу тест на Exception если файла не существует, и тест getFileCss('test.css') вернет то что в test.css написанно
в parseFileCss можно написать тест на то что ошибочно написанный css поймется правильно имено так и не иначе
 

Ragazzo

TDD interested
craz
он "добился") в НЗ переехал, тут редко бывает ищи его в твиттере.
 
  • Like
Реакции: craz

craz

Нестандартное звание
все зашло солнце русского аджайла?(

)))


нз - незалежная? украина?
 
Сверху