
Anatoly
19.02.2018
11:03:24

Oleg
19.02.2018
11:03:30

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 - это извращение, имхо. Тем более, судя по задаче человека - ему лучше всего просто осваивать тесты для начала.

Anatoly
19.02.2018
11:20:35


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

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

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
у меня есть игровой класс

Berkus
19.02.2018
11:30:17

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

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

Alexander
19.02.2018
11:30:41

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

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
не с первого раза это будет

Joy
19.02.2018
11:34:02

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

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

Google

Anatoly
19.02.2018
11:39:18

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

Matwey
19.02.2018
11:42:27

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

Vitalii
19.02.2018
11:43:11
php

Aidar
19.02.2018
11:47:11

Дед Пегас
19.02.2018
11:47:17

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

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

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

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

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

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

Vladimir
19.02.2018
11:58:04

Ilia
19.02.2018
13:16:49