@ProCxx

Страница 1768 из 2477
Anatoly
19.02.2018
11:03:24
Я сам разберусь, мне пока "предмет исследования" непонятен. Начиная с того, что делаю я свой проектик - имеет ли смысл делать тесты для него, и КАК ИМЕННО это делается.
здесь все очень просто, пишешь ты функцию реверса строки. надо ли проверить граничные случаи? надо ли проверить как она ведет себя с utf8 и т.п.?

Alexander
19.02.2018
11:03:41
Пока я регулярно собираю, запускаю и тыкаю всячески кнопочки. Иногда вдруг падает.
Ну вот, скоро тестами обмажешь. Селениум там какой-нибудь

Berkus
19.02.2018
11:03:48
Пока я регулярно собираю, запускаю и тыкаю всячески кнопочки. Иногда вдруг падает.
это уже интеграционный и енд-ту-енд тест, до этого еще два слоя

Google
Berkus
19.02.2018
11:04:23
написание тестов еще приучает писать чистый и тестируемый код, а не херню с кучей скрытого состояния

(Олегу это ясен пень не нужно)

Oleg
19.02.2018
11:04:52
Ты такой смишной

Joy
19.02.2018
11:09:45
Первое, кстати, что мешало мне понять - само понятие unit. Я раньше считал что это класс. Вот к слову из книги о которой говорили выше, я о них и узнал.

Oleg
19.02.2018
11:10:44
Поясню для Беркуса: тесты - это хорошо. Но TDD - это уж очень дело задачи и требований. Так что начинать знакомство с unit-tests с TDD - это извращение, имхо. Тем более, судя по задаче человека - ему лучше всего просто осваивать тесты для начала.

Joy
19.02.2018
11:23:04
Короч вот о чем я говорил - открываем "юнит-тестирование для чайников", но вместо точки входа имеем целые абзацы на марсианском языке: Вне зависимости от платформы не стоит писать велосипеды. Я видел много проектов, в которых автоматические тесты (в основном, не юнит, а приемочные) запускались из консольного приложения. Не надо этого делать, все уже сделано за вас. Уделите чуть больше внимания обзору фреймворков. Например, многие .NET разработчики используют MsTest только потому, что он входит в поставку студии. Мне гораздо больше по душе NUnit. Он не создает лишних папок с результатами тестов и имеет поддержку параметризированного тестирования. Я могу так же легко запускать мои тесты на NUnit с помощью Решарпера. Кому-то понравится элегантность xUnit’а: конструктор вместо атрибутов инициализации, реализация IDisposable как TearDown.

Там вся статья в принципе написана из расчета, что читатель уже умеет писать тесты

Berkus
19.02.2018
11:26:32
Anatoly
19.02.2018
11:27:06
Там вся статья в принципе написана из расчета, что читатель уже умеет писать тесты
тебе нужна статья, которая бы научила писать тесты для твоего проекта?

Joy
19.02.2018
11:27:24
нужна "точка входа"

я думаю, что минимальные знания - это как написать простенький тест

теоретически все просто

Google
Joy
19.02.2018
11:28:03
но когда читаю такие вот статьи, то одни вопросы возникают

Berkus
19.02.2018
11:28:21
я думаю, что минимальные знания - это как написать простенький тест
взять какой-то тест фреймворк (Catch2, boost.test любой) и по его туториалу написать первый тест

Oleg
19.02.2018
11:28:25
http://cppunit.sourceforge.net/doc/cvs/cppunit_cookbook.html

я на этом осваивал

Joy
19.02.2018
11:28:55
то есть вот реально грамотный совет - начинать с фреймворка?

Berkus
19.02.2018
11:28:58
это будет что-то типа BOOST_AUTO_TEST(firstTest) { BOOST_TEST(value == 1) }

Alexander
19.02.2018
11:29:07
я думаю, что минимальные знания - это как написать простенький тест
напиши функцию разоворота строки. А потом проверь, что она работает на: 1) На случае нечётного кол-ва символов 2) Чётного кол-ва 3) Пустой строки Код скинь сюда

Anatoly
19.02.2018
11:29:20
@narical давай я попробую тебе ее дать: написал ты функцию: int add(int a, int b) {return a + b;} а теперь ты создаешь набор утверждений: assert(5 == add(3, 2)); assert(0 == add(-1, 1)); вот это и есть процесс написания теста - набор утверждений относительно твоей функциональности

Berkus
19.02.2018
11:29:20
то есть вот реально грамотный совет - начинать с фреймворка?
ну там уже все настроено для тебя, можно переходить собсно к тестам

Joy
19.02.2018
11:29:54
ребята, вот мне бы понять как оно на самом нижнем уровне работает - вы снова общаетесь так будто я уже умею что-то делать))

Matwey
19.02.2018
11:30:08
как работает?

Joy
19.02.2018
11:30:09
у меня есть игровой класс

Joy
19.02.2018
11:30:19
ну хотя это уже итеграционное тестирование, да

Berkus
19.02.2018
11:30:26
тест проверяет что все утверждения выполняются

ВСЁ

Joy
19.02.2018
11:30:42
где мне его писать? как его собирать?

это часть проекта?

Google
Matwey
19.02.2018
11:30:49
берешь и проверяешь что при заданных аргументах тестируемая функция возвращает ожидаемый ответ

Alexander
19.02.2018
11:30:52
я написал - просто сделай то, что я тебя попросил

Joy
19.02.2018
11:30:53
отдельные исполняемые файлы?

Berkus
19.02.2018
11:30:56
часть проекта, писать в файле с тестами, собирать билдсистемой

Joy
19.02.2018
11:31:04
так, ага

Berkus
19.02.2018
11:31:05
запускать ctest . если ты пользуешься цмейком

Joy
19.02.2018
11:31:08
это один файл с тестами?

Berkus
19.02.2018
11:31:16
ибо в цмейке встроена поддержка тестов изначально

и этим он ТОЖЕ хорош

что бы там Олег ни утверждал

Joy
19.02.2018
11:32:13
я написал - просто сделай то, что я тебя попросил
я могу, но не вижу особого смысла делать то, что могу. мои вопросы касательно других вещей ведь

у меня проект в cmake собирается

Berkus
19.02.2018
11:33:01
у меня проект в cmake собирается
ну и отлично, прочитал главу в цмейк документации про ctest?

Alexander
19.02.2018
11:33:07
я могу, но не вижу особого смысла делать то, что могу. мои вопросы касательно других вещей ведь
нет, ты не понимаешь даже основ, зачем нужны фреймворки и так далее

Berkus
19.02.2018
11:33:13
там про всё написано, как enable_tests() как чо

Alexander
19.02.2018
11:33:19
какие билд-системы, какие встраивания, если нет понимания, как тест писать?

Berkus
19.02.2018
11:33:33
Joy
19.02.2018
11:33:41
нет, потому что перед тем как использовать автоматизацию я (в целом по жизни) сперва разбираюсь как сделать руками, и через это понимаю как оно устроено

Berkus
19.02.2018
11:33:42
не с первого раза это будет

Google
Berkus
19.02.2018
11:34:09
какие билд-системы, какие встраивания, если нет понимания, как тест писать?
Смотри, согласно ТДД он должен написать первый тест, увидеть как он пофейлится и добиться того чтобы он стал зеленым, после этого можно понимание.

первые пару тысяч тестов все равно будут полным говном

Joy
19.02.2018
11:34:30
нах ТДД, не?

тесты это не обязательно ТДД же?

Berkus
19.02.2018
11:34:56
нах ТДД, не?
тдд это когда ты пользуешься тестами, я использую этот термин, чтобы не писать много

Joy
19.02.2018
11:34:57
я просто хочу автоматизировать банальные проверки

ТДД это определенная парадигма, если ты используешь этот термин по своему, то вводишь в заблуждение

Admin
ERROR: S client not available

Berkus
19.02.2018
11:35:37
я вполне понимаю что ты не будешь начинать писать код с тестов, Олег тебе это уже внушил

не буду тогда больше ничего говорить, а то ты совсем заблудишься, пусть Зайцев вон просвятит как надо

Joy
19.02.2018
11:36:10
давайте конкретику

у меня есть класс, отвечающий за персонажа в игре

методы типа takeDamage, levelUp

Anatoly
19.02.2018
11:36:53
давайте конкретику
а ты хамло, тебе конкретики набросали на год вперед

Joy
19.02.2018
11:37:04
выразился несколько неудачно, был понят сильно неправильно

Zombibober
19.02.2018
11:37:34
В чем проблема? или Я что-то не понимаю?` // возвращает true, если p и q указывают на один и тот же объект template<class T> bool isSameObject(T const * p, T const * q) { if (dynamic_cast<T const *> (p) == dynamic_cast<T const *> (q)) return true; else return false; }` Предположим, что вам даётся два указателя на объект некоторого сложного полиморфного класса, который использует множественное наследование. Оба указателя имеют один и тот же тип, но могут ссылаться на разные однотипные базы внутри одного объекта. Напишите шаблонную функцию, которая по двум однотипным указателям проверяет, указывают ли они на один объект.

Oleg
19.02.2018
11:38:26
я вполне понимаю что ты не будешь начинать писать код с тестов, Олег тебе это уже внушил
ему и не надо. Он только осваивает тесты - пусть просто берет примеры и пишет тесты на хотя бы обычные а+b. Потом придет, если надо, и к TDD и к нормальным тестами

Maxim
19.02.2018
11:39:00
Подскажите какой язык сейчас стоит учтить?

Google
Oleg
19.02.2018
11:39:20
китайский

Joy
19.02.2018
11:43:05
Чтобы не флудить в общем чате - может мне какой добрый человек в личку написать, чтобы на примере моего класса показать как оно делается?

Vitalii
19.02.2018
11:43:11
php

Aidar
19.02.2018
11:47:27
я вроде не умею

Zombibober
19.02.2018
11:48:23
@AsGreyWolf с помощь dynamic_cast

Aidar
19.02.2018
11:48:30
а я усложнил

@AsGreyWolf с помощь dynamic_cast
закой хрен там динамик каст который делает ничего

Zombibober
19.02.2018
11:49:09
@AsGreyWolf тогда как ?

Aidar
19.02.2018
11:49:26
я не понял что хотят

Joy
19.02.2018
11:52:17
короче это была достойная попытка погрузиться в новый увлекательный мир юнит-тестирования ))

Ilia
19.02.2018
13:16:49
короче это была достойная попытка погрузиться в новый увлекательный мир юнит-тестирования ))
Тебе вон Толя написал самые низы, как ты хотел. Погляди внимательно.

Подозреваю нечто вроде: template<typename T, typename U> bool is_same_child(const U * const lhs, const U * const rhs) { return dynamic_cast<const T *>(lhs) == dynamic_cast<const T *>(rhs); }
Там должно быть три параметра шаблона, три класса. Общий базовый, и два указателя. Да последних можно выводить из типов переданных указателей. Базовый надо указать явно.

Страница 1768 из 2477