ФорумСообществоФлейм → инлайн тестинг, кому было бы интересно?

инлайн тестинг, кому было бы интересно?

  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 28 декабря 2012 г. 9:13, спустя 1 час 59 минут 31 секунду


    а зенд оптимайзер или ионкуб какой-нибудь что делают?


    А Zend Optimizer это же вроде акселератор, а не обфускатор (который Zend Guard)? Вообще, точно про них не знаю, но если коммент начинается с «/**» (две звездочки в начале), то это уже не просто многострочный коммент, а «doc-комментарий» и его можно получить через reflection. Так что, чисто формально, они должны это учитывать. Тем более, что аннотации сейчас используются чуть ли не во всех относительно новых проектах (ZF2, Symfony2, Doctrine2, Behat, etc).
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 28 декабря 2012 г. 14:07, спустя 4 часа 54 минуты 36 секунд

    Хей, холиваршики появились )))

    Тут вам не юнит тесты- кто-то видит моки и стабы????
    Ту первая линия обороны господа хорошие )))
    просто если писать данные тесты то в юнит будет меньше чего покрывать(ток отдельные случай) ИМХО.
    Спустя 72 сек.
    да и бехавиоур не заменит )))
    Спустя 165 сек.
    И да- анотации используют везде- кому не лень… почему??? да очень просто- тренд хДД… да и удобно в некотором роде… всё под рукой получается- и методункция етц и тесты….
    Думаю докблоки не зря задумывались, ток сейчас там совсем не только доки ))
    Спустя 281 сек.
    *методункция - метод или функция
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 28 декабря 2012 г. 18:36, спустя 4 часа 29 минут 11 секунд

    в конец отмороженные адепты юнит-тестов говорят, что тесты заменяют документацию.
    то есть вообще даже камментов никаких не пишите, а если кому надо, пусть лезет в тесты и разъёбывает, как этот класс можно использовать.

    можно изложенную здесь фигню использовать не столько для тестов, а именно для документирования тёмных моментов, чтобы их словами не описывать.
    хотя тут каждый раз придётся думать мозгом, чтобы не перейти черту и не исписать по десять экранов перед каждым методом.
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 28 декабря 2012 г. 19:06, спустя 29 минут 50 секунд

    хДД… мдеа уж- ну кто на что горазд)

    Вообшхе код должен быть лёгок, логичен и читабелен… а доки ет как демка- опытный поймёт что делает метод и из доков- не заглядывая.
    Блин- тесты ет хорошо, но- http://xn-----clcksaplxf6byd3cyb.xn--p1ai/
    Спустя 114 сек.
    поясню изначально задумывавшхуеся цель- пишешь прототип метода|функции и заполняешь докблок… а потом имплементируешь код пока ошибки не перестанут вылезать- ТДД блядь)))
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 28 декабря 2012 г. 19:44, спустя 38 минут 4 секунды

    В обычном тексте программы есть 2 части: та что обрабатывается интерпретатором и та что игнорируется интерпретатором. Вторую часть можно отбросить и не рассматривать. Назовём её комментариями. Остаётся часть, которую интерпретатор языка учитывает, и которая влияет на результат. Назовём её кодом.
    Для выражения требуемого функционала ЯП предлагает программисту набор синтаксических и семантических возможностей, так сказать, из коробки. Предполагается, что то, что потребуется программисту, язык уже умеет. То есть, если программисту нужны фишки X, Y, Z - он описывает их с помощью встроенных в язык синтаксиса и семантики, так как в языке уже есть X, Y, Z.
    Но что делать, если программисту нужна возможность W, которой нет в языке? Иногда W можно выразить через X, Y, Z. Но если нет - тогда остаётся либо отказаться от W, либо сменить язык.
    Ты же пытаешься поступить четвёртым способом - создать новый язык, DSL для инлайн-тестинга. Это метапрограммирование. Но встроенные возможности метапрограммирования в php слабы, поэтому ты используешься DSL, а не eDSL, как это возможно в нормальных языках, и кладёшь код в комментарий. Сама по себе попытка засунуть функционал в комментарии говорит о том, что язык не подходит для задачи. Это касается не только инлайн-тестинга, а вообще, любой фичи. Потому что когда ты изобретаешь DSL - тебе под него нужен парсер-интерпретатор, а значит тесты для него. В итоге ты пишешь тесты для тестов. Ну как бы эээ…
    И ещё, зачем ты изобретаешь велосипед, в смысле новый синтаксис описания тестов? Хочется ассертов - используй натив пхп
    /**
     * @param mixed $a
     * @param callable $b
     * @param array $c
     * @assert %function%(2,2,array(2)) === 2
     */
    function exampleTestFunction($a, $b, array $c)
    {
        return $a + $b + $c[0];
    }

    заменяешь %function% и пихаешь в assert
    не всё полезно, что в swap полезло
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 28 декабря 2012 г. 20:03, спустя 18 минут 21 секунду

    ок, а как же множественные ассерты? для даждоко писать новую строчку?

    Если есть идея другой реализации- код в студию…

    А такой вариант как тот указанный выше- уже имплиментировал- поверь, не удобно )
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 28 декабря 2012 г. 20:03, спустя 30 секунд

    а доки ет как демка- опытный поймёт что делает метод и из доков- не заглядывая.

    то доки а не тесты

    пишешь прототип метода|функции и заполняешь докблок… а потом имплементируешь код пока ошибки не перестанут вылезать

    открываешь в соседней вкладке файл для тестов и пишешь в нём тесты, затем имплементируешь
    не всё полезно, что в swap полезло
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 28 декабря 2012 г. 20:04, спустя 20 секунд

    @assert(2,2,array(2)) === (2)
    - авообшхе тогда так
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 28 декабря 2012 г. 20:05, спустя 1 минуту 1 секунду

    множественные ассерты

     * @assert %function%(2,2,array(2)) === 6
    * @assert %function%(2,3,array(2)) === 7
    * @assert %function%(4,2,array(2)) === 8
    не всё полезно, что в swap полезло
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 28 декабря 2012 г. 20:08, спустя 3 минуты 4 секунды

    пипл- зухе холивар… нужны юнит- пожалуйста…. ет не альтернатива юнит тестам- ет + к ним(точнее до них)… каждому не угодишь…
    Спустя 50 сек.
    для простых тестов- самое то…. но нафига там %функцион%? не пойму
    Спустя 131 сек.
    кстати, чем лучше твой вариант master, ведь по сути тоже самое… ток в профиль )
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 28 декабря 2012 г. 20:09, спустя 1 минуту 44 секунды

    но нафига там %функцион%?


    /**
    * @assert gettype(%function%(2,3,4)) == 'string'
    */
    function blablaa(…){

    }
    не всё полезно, что в swap полезло
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 28 декабря 2012 г. 20:12, спустя 2 минуты 12 секунд


    @assert {
    @params {
    2
    3
    4
    }
    @assertions {
    is_string($result)
    }
    }


    ?? nu i chem ludshe?
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 28 декабря 2012 г. 20:12, спустя 56 секунд

    чем лучше твой вариант master, ведь по сути тоже самое… ток в профиль

    ближе к нативному синтаксису пхп, можно вставлять в ассерт с минимумом преобразований
    не всё полезно, что в swap полезло
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 28 декабря 2012 г. 20:13, спустя 57 секунд


    /**
        * Note that for the method testing is reused class
        * instance from the class test case if method cases
        * are added during the class test case(isset testMethods flag)
        *
        * @param mixed $a
        * @param callable $b
        * @param array $c
        *
        * @assert {
        *      @params {
        *          function(array $arr) { return $arr[0]; }
        *          function(array $arr) { return $arr[0]; }
        *          function(array $arr) { return $arr[0]; }
        *      }
        *      @assertions {
        *          $result == 4
        *          segswegw // this is messed thing, but don't worry about!!!
        *          is_int($result)
        *          !is_scalar($result)
        *      }
        * }
        */


    a tut kak budet vygljadeti?
    Спустя 41 сек.
    v dev environment ne stoli vazhna skorost'… i poveri- ona tut ne na mnogo menishe budet
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 28 декабря 2012 г. 20:14, спустя 19 секунд



    @assert {
       @params {
              2
              3
              4
          }
          @assertions {
              is_string($result)
          }
    }


    ?? nu i chem ludshe?


    а зачем эта простыня в каментах?
    а если будет 10 инлайн-ассертов?
    не всё полезно, что в swap полезло

Пожалуйста, авторизуйтесь, чтобы написать комментарий!