Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: тестирование(assertion)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Perun
Отправлено: 29 Апреля, 2019 - 19:47:15
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Читал мануал, сеть, все равно не понял.
Есть какая-то функция. Пусть будет то же вычисление дискриминанта. Параметры для простоты передаю прямо в скрипте. Сделал три утверждения.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function discriminant($a, $b, $c){
  3.     return $b*$b-4*$a*$c;
  4. }
  5. $a = 1;
  6. $b = 2;
  7. $c = 1;
  8.  
  9. assert(0 === discriminant(1, 2, 1));
  10. assert(1 === discriminant(2, 5, 3));
  11. assert(-24 === discriminant(2, 0, 3));
  12.  
  13.  
  14. echo 'дискриминант: '.discriminant($a,$b,$c);
  15. ?>



Я в правильном месте разместил утверждения? Это же часть скрипта получается?
Как правильно флаги в php.ini установить?

Я установил
zend.assertions = 1, остальное по умолчанию. assert.exception пробовал разные значения - ничего не меняется.

вот секция по утверждениям:
CODE (htmlphp):
скопировать код в буфер обмена
  1. [Assertion]
  2. ; Switch whether to compile assertions at all (to have no overhead at run-time)
  3. ; -1: Do not compile at all
  4. ;  0: Jump over assertion at run-time
  5. ;  1: Execute assertions
  6. ; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1)
  7. ; Default Value: 1
  8. ; Development Value: 1
  9. ; Production Value: -1
  10. ; http://php.net/zend.assertions
  11. zend.assertions = 1
  12. ;assert.active = On
  13. ; Throw an AssertationException on failed assertions
  14. ; http://php.net/assert.exception
  15. ;assert.exception = Off
  16. ; Issue a PHP warning for each failed assertion. (Overridden by assert.exception if active)
  17. ; http://php.net/assert.warning
  18. ;assert.warning = On
  19. ;assert.bail = Off
  20. ;assert.callback = 0
  21. ;assert.quiet_eval = 0


Но как бы я не менял саму функцию, только изменяются результаты вичисления дискриминанта.
Что я делаю не так?
 
 Top
LIME
Отправлено: 30 Апреля, 2019 - 11:03:08
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Perun это не тот assert что про тестирование
это очень сомнительной полезности фича
я считаю что если контракт должен выполняться, то и на бою тоже
имхо для assert (которых не тест, а проверка согласованности, проверка контракта) лучше это https://github[dot]com/webmozart/assert
а для тестов вот какой assert имется https://phpunit[dot]readthedocs[dot]io/r[dot][dot][dot]for-phpunit[dot]html
 
 Top
Perun
Отправлено: 30 Апреля, 2019 - 11:47:30
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Тогда, я так понимаю, с моими знаниями - рано этим вопросом задаваться, хотя с функциями, классами поверхностно и знаком.
А вообще парадокс - с одной стороны - тестирование - наверное как одна из основ написания кода, а приходишь к осознанию этого/как работает/как организовать - уже с багажом знаний выше среднего..
 
 Top
LIME
Отправлено: 30 Апреля, 2019 - 12:45:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Perun пишет:
тестирование - наверное как одна из основ написания кода
не совсем
тесты писать просто
уметь их писать куда сложнее
действительно парадокс)
тесты надо писать нужные и правильно
плохо написанный тест может стать хуже его отсутствия
поначалу можно писать всякие на всё подряд))
и надо добавить что код написанный через тесты получается более качественным, но надо освоить основные принципы архитектуры, DI, SOLID
а потом уже с тестами наперевес можно и на DDD + CQRS + ES напасть) последнее опционально конечно
 
 Top
Perun
Отправлено: 30 Апреля, 2019 - 13:18:00
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Так я об этом и говорю, что тесты еще нужно уметь писать, чтобы писать качественный код. Но писать то качественный код желательно изначально, а изначально нет нужных знаний для качественного тестирования. Замкнутый круг.
(Добавление)
LIME пишет:
но надо освоить основные принципы архитектуры, DI, SOLID

Вы можете что то посоветовать из простой, понятной литературы или ресурс в сети для совсем начинающих, чтобы хотя бы теоретическую базу осваивать? Можно в личку, если тут запрещено.
 
 Top
LIME
Отправлено: 30 Апреля, 2019 - 14:10:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




нет не могу
дядю боба рановато наверное, да и примеры там на сях
погугли почитай DRY, KISS, YAGNY, закон Деметры, SOLID, DI, слоеная архитектура, гексагональная архитектура
хоть глазами пробеги
читать много и надолго) для начала статейки небольшие поищи чтоб представление появилось
лучше на хабре, потому что там в коментах поправляют если статья врет
(Добавление)
оо...вспомнил
"Рефакторинг" Мартин Фаулер
зачетная брощюрка для начала
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB