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
Подскажите, где можно почитать про юнит-тесты начиная с основ. Гуглил сам, не смог найти "точку входа" - вся найденная информация предполагает, что я уже что-то знаю
Anatoly
Oleg
Anatoly
Anatoly
TDD это хороший старт для проектирования API и обзора поляны use case. Возводить их в самоцель - да, зачем? но владеть этой техникой нужно.
Alexander "SonnySlave"
всё хорошо в меру, как говорится
Oleg
http://theiced.livejournal.com/254704.html
Oleg
считаю, что тесты - это ок. Но тесты должны покрывать код, а не код писаться для подтверждения работы тестов.
Anatoly
главное, что этот тезис здесь никто не выдвигал
Berkus
Joy
во, накидали, спасибо!
Oleg
Berkus
в тдд тесты позволяют тебе СОЗДАТЬ минимально необходимый и достаточный АПИ, потом его реализовать так, как его ожидает увидеть пользователь, ну и потом проверять что он продолжает работать, так как ожидает от него пользователь
Oleg
Я еще раз повторяю - твой коммент - это дело исключительно твоего вкуса и тех приложений, которые ты разрабатывал. В моем случае это никогда а) не нужно и б) не подходит.
Поэтому ешь свое tdd ложкой, но не пытайся меня этим кормить
Berkus
вкус тут не при чём
Berkus
Berkus
Anatoly
Oleg
> истинно-верный путь.
Программирование - это не церковь. Тут не единственно правильного решения
Berkus
Joy
Я сам разберусь, мне пока "предмет исследования" непонятен. Начиная с того, что делаю я свой проектик - имеет ли смысл делать тесты для него, и КАК ИМЕННО это делается.
Berkus
Joy
Пока я регулярно собираю, запускаю и тыкаю всячески кнопочки. Иногда вдруг падает.
Berkus
Anatoly
Oleg
Alexander "SonnySlave"
Berkus
Berkus
написание тестов еще приучает писать чистый и тестируемый код, а не херню с кучей скрытого состояния
Berkus
(Олегу это ясен пень не нужно)
Oleg
Ты такой смишной
Joy
Первое, кстати, что мешало мне понять - само понятие unit. Я раньше считал что это класс. Вот к слову из книги о которой говорили выше, я о них и узнал.
Oleg
Поясню для Беркуса: тесты - это хорошо. Но TDD - это уж очень дело задачи и требований. Так что начинать знакомство с unit-tests с TDD - это извращение, имхо. Тем более, судя по задаче человека - ему лучше всего просто осваивать тесты для начала.
Anatoly
Joy
Короч вот о чем я говорил - открываем "юнит-тестирование для чайников", но вместо точки входа имеем целые абзацы на марсианском языке:
Вне зависимости от платформы не стоит писать велосипеды. Я видел много проектов, в которых автоматические тесты (в основном, не юнит, а приемочные) запускались из консольного приложения. Не надо этого делать, все уже сделано за вас.
Уделите чуть больше внимания обзору фреймворков. Например, многие .NET разработчики используют MsTest только потому, что он входит в поставку студии. Мне гораздо больше по душе NUnit. Он не создает лишних папок с результатами тестов и имеет поддержку параметризированного тестирования. Я могу так же легко запускать мои тесты на NUnit с помощью Решарпера. Кому-то понравится элегантность xUnit’а: конструктор вместо атрибутов инициализации, реализация IDisposable как TearDown.
Joy
Там вся статья в принципе написана из расчета, что читатель уже умеет писать тесты
Berkus
Anatoly
Joy
нужна "точка входа"
Joy
я думаю, что минимальные знания - это как написать простенький тест
Joy
теоретически все просто
Joy
но когда читаю такие вот статьи, то одни вопросы возникают
Oleg
http://cppunit.sourceforge.net/doc/cvs/cppunit_cookbook.html
Oleg
я на этом осваивал
Joy
то есть вот реально грамотный совет - начинать с фреймворка?
Berkus
это будет что-то типа BOOST_AUTO_TEST(firstTest) { BOOST_TEST(value == 1) }
Alexander "SonnySlave"
Anatoly
@narical давай я попробую тебе ее дать:
написал ты функцию:
int add(int a, int b) {return a + b;}
а теперь ты создаешь набор утверждений:
assert(5 == add(3, 2));
assert(0 == add(-1, 1));
вот это и есть процесс написания теста - набор утверждений относительно твоей функциональности
Joy
ребята, вот мне бы понять как оно на самом нижнем уровне работает - вы снова общаетесь так будто я уже умею что-то делать))
Matwey
как работает?
Joy
у меня есть игровой класс
Berkus
Joy
ну хотя это уже итеграционное тестирование, да
Berkus
тест проверяет что все утверждения выполняются
Berkus
ВСЁ
Alexander "SonnySlave"
Joy
где мне его писать? как его собирать?
Joy
это часть проекта?
Matwey
берешь и проверяешь что при заданных аргументах тестируемая функция возвращает ожидаемый ответ
Alexander "SonnySlave"
я написал - просто сделай то, что я тебя попросил
Joy
отдельные исполняемые файлы?
Berkus
часть проекта, писать в файле с тестами, собирать билдсистемой
Joy
так, ага
Berkus
запускать ctest . если ты пользуешься цмейком
Joy
это один файл с тестами?
Berkus
ибо в цмейке встроена поддержка тестов изначально
Berkus
и этим он ТОЖЕ хорош
Berkus
что бы там Олег ни утверждал