Berkus
да, либы еще таскают скрытый стейт в виде каких-нибудь статических переменных
Maksim
согласен, так лучше и поступать, это логично линковать дебаг с дебагом, а релиз с релизом. Просто тут столкнулся в проекте с тем что на релизе работает, а если собрать проект с конфигурацией дебаг, не меняя либки, то результат с теми же входными параметрами не тот, который ожидал и вот решил получше разобраться что к чему
Maksim
Проект небольшой, если в Conan сейчас не найду её, быстрее на релизе отладиться
Pavel
IDEA: A series of nonverbal algorithm assembly instructions (Score: 100+) Link: http://j.mp/2EyozRL Comments: http://j.mp/2Ezrlq7
zi
.
Joy
В supapro мне не ответили (
Joy
Подскажите, где можно почитать про юнит-тесты начиная с основ. Гуглил сам, не смог найти "точку входа" - вся найденная информация предполагает, что я уже что-то знаю
Oleg
http://blog.byndyu.ru/2010/01/tdd.html https://habrahabr.ru/post/169381/ https://tproger.ru/translations/unit-tests-purposes/
TDD - это когда нахуй писать код, давайте лучше еще ебанем тестов(с)
Anatoly
TDD это хороший старт для проектирования API и обзора поляны use case. Возводить их в самоцель - да, зачем? но владеть этой техникой нужно.
Alexander "SonnySlave"
всё хорошо в меру, как говорится
Berkus
TDD - это когда нахуй писать код, давайте лучше еще ебанем тестов(с)
нет, это "нахуй писать лишний код, не имея никакого представления как он будет работать, давайте начнем с описания в тестах его интерфейса и ожидаемого поведения с точки зрения пользователя"
Oleg
http://theiced.livejournal.com/254704.html
Oleg
считаю, что тесты - это ок. Но тесты должны покрывать код, а не код писаться для подтверждения работы тестов.
Anatoly
главное, что этот тезис здесь никто не выдвигал
Berkus
считаю, что тесты - это ок. Но тесты должны покрывать код, а не код писаться для подтверждения работы тестов.
прочитай то, что я написал, столько раз, сколько необходимо, пока не поймешь
Joy
во, накидали, спасибо!
Berkus
дело вкуса.
нет, какого вкуса, прочитай еще раз
Berkus
в тдд тесты позволяют тебе СОЗДАТЬ минимально необходимый и достаточный АПИ, потом его реализовать так, как его ожидает увидеть пользователь, ну и потом проверять что он продолжает работать, так как ожидает от него пользователь
Oleg
Я еще раз повторяю - твой коммент - это дело исключительно твоего вкуса и тех приложений, которые ты разрабатывал. В моем случае это никогда а) не нужно и б) не подходит. Поэтому ешь свое tdd ложкой, но не пытайся меня этим кормить
Berkus
вкус тут не при чём
Oleg
> истинно-верный путь. Программирование - это не церковь. Тут не единственно правильного решения
Anatoly
> истинно-верный путь. Программирование - это не церковь. Тут не единственно правильного решения
ну тогда ознакомление с TDD ни к чему плохому привести не может. напротив, откроет хороший подход к проектированию API. ну а дальше свой опыт уже введет свою шкалу мер и весов.
Joy
Я сам разберусь, мне пока "предмет исследования" непонятен. Начиная с того, что делаю я свой проектик - имеет ли смысл делать тесты для него, и КАК ИМЕННО это делается.
Joy
Пока я регулярно собираю, запускаю и тыкаю всячески кнопочки. Иногда вдруг падает.
Berkus
Пока я регулярно собираю, запускаю и тыкаю всячески кнопочки. Иногда вдруг падает.
для тыкания кнопочек есть автоматизированные тулы типа selenium и roboelectric
Anatoly
Я сам разберусь, мне пока "предмет исследования" непонятен. Начиная с того, что делаю я свой проектик - имеет ли смысл делать тесты для него, и КАК ИМЕННО это делается.
здесь все очень просто, пишешь ты функцию реверса строки. надо ли проверить граничные случаи? надо ли проверить как она ведет себя с utf8 и т.п.?
Alexander "SonnySlave"
Пока я регулярно собираю, запускаю и тыкаю всячески кнопочки. Иногда вдруг падает.
Ну вот, скоро тестами обмажешь. Селениум там какой-нибудь
Berkus
Пока я регулярно собираю, запускаю и тыкаю всячески кнопочки. Иногда вдруг падает.
это уже интеграционный и енд-ту-енд тест, до этого еще два слоя
Berkus
написание тестов еще приучает писать чистый и тестируемый код, а не херню с кучей скрытого состояния
Berkus
(Олегу это ясен пень не нужно)
Oleg
Ты такой смишной
Joy
Первое, кстати, что мешало мне понять - само понятие unit. Я раньше считал что это класс. Вот к слову из книги о которой говорили выше, я о них и узнал.
Oleg
Поясню для Беркуса: тесты - это хорошо. Но TDD - это уж очень дело задачи и требований. Так что начинать знакомство с unit-tests с TDD - это извращение, имхо. Тем более, судя по задаче человека - ему лучше всего просто осваивать тесты для начала.
Joy
Короч вот о чем я говорил - открываем "юнит-тестирование для чайников", но вместо точки входа имеем целые абзацы на марсианском языке: Вне зависимости от платформы не стоит писать велосипеды. Я видел много проектов, в которых автоматические тесты (в основном, не юнит, а приемочные) запускались из консольного приложения. Не надо этого делать, все уже сделано за вас. Уделите чуть больше внимания обзору фреймворков. Например, многие .NET разработчики используют MsTest только потому, что он входит в поставку студии. Мне гораздо больше по душе NUnit. Он не создает лишних папок с результатами тестов и имеет поддержку параметризированного тестирования. Я могу так же легко запускать мои тесты на NUnit с помощью Решарпера. Кому-то понравится элегантность xUnit’а: конструктор вместо атрибутов инициализации, реализация IDisposable как TearDown.
Joy
Там вся статья в принципе написана из расчета, что читатель уже умеет писать тесты
Anatoly
Там вся статья в принципе написана из расчета, что читатель уже умеет писать тесты
тебе нужна статья, которая бы научила писать тесты для твоего проекта?
Joy
нужна "точка входа"
Joy
я думаю, что минимальные знания - это как написать простенький тест
Joy
теоретически все просто
Joy
но когда читаю такие вот статьи, то одни вопросы возникают
Berkus
я думаю, что минимальные знания - это как написать простенький тест
взять какой-то тест фреймворк (Catch2, boost.test любой) и по его туториалу написать первый тест
Oleg
http://cppunit.sourceforge.net/doc/cvs/cppunit_cookbook.html
Oleg
я на этом осваивал
Joy
то есть вот реально грамотный совет - начинать с фреймворка?
Berkus
это будет что-то типа BOOST_AUTO_TEST(firstTest) { BOOST_TEST(value == 1) }
Alexander "SonnySlave"
я думаю, что минимальные знания - это как написать простенький тест
напиши функцию разоворота строки. А потом проверь, что она работает на: 1) На случае нечётного кол-ва символов 2) Чётного кол-ва 3) Пустой строки Код скинь сюда
Anatoly
@narical давай я попробую тебе ее дать: написал ты функцию: int add(int a, int b) {return a + b;} а теперь ты создаешь набор утверждений: assert(5 == add(3, 2)); assert(0 == add(-1, 1)); вот это и есть процесс написания теста - набор утверждений относительно твоей функциональности
Berkus
то есть вот реально грамотный совет - начинать с фреймворка?
ну там уже все настроено для тебя, можно переходить собсно к тестам
Joy
ребята, вот мне бы понять как оно на самом нижнем уровне работает - вы снова общаетесь так будто я уже умею что-то делать))
Matwey
как работает?
Joy
у меня есть игровой класс
Joy
ну хотя это уже итеграционное тестирование, да
Berkus
тест проверяет что все утверждения выполняются
Berkus
ВСЁ
Joy
где мне его писать? как его собирать?
Joy
это часть проекта?
Matwey
берешь и проверяешь что при заданных аргументах тестируемая функция возвращает ожидаемый ответ
Alexander "SonnySlave"
я написал - просто сделай то, что я тебя попросил
Joy
отдельные исполняемые файлы?
Berkus
часть проекта, писать в файле с тестами, собирать билдсистемой
Joy
так, ага
Berkus
запускать ctest . если ты пользуешься цмейком
Joy
это один файл с тестами?
Berkus
ибо в цмейке встроена поддержка тестов изначально
Berkus
и этим он ТОЖЕ хорош
Berkus
что бы там Олег ни утверждал