unit tests. linux. c++
"просто код". старющий. его много. никто не будет все єто дерьмо юниттестировать. но хотелось бьі то, что "новое" туда впаиваю, тестировалось. что есть чтобі попроще? проект - просто код. никаких фреймуорков и особьіх технологий. я работаю с vi + eclipse, один коллега - с нетбинз, другой - только с vi. в общем, все как в каменном веке. но кое-что бьі юниттестировал.
Юнит тестам пофигу, пишется код в vi или в браузере. Главное, чтобы архитектура приложения позволяла проводить юнит тесты. А для этого нужно постоянно проводить рефакторинг и новые компоненты добавлять, имея ввиду юнит тесты.
Юнит тестам пофигу, пишется код в vi или в браузере.
разумеется. я єто упомянул, чтобьі подчеркнуть, что никакого "ide" не имеется. если бьі нечто вроде visual studio, qt creator`a или еще чего, то там имеются встроенньіе средства. здесь - нет.
Главное, чтобы архитектура приложения позволяла проводить юнит тесты.
да мне наср*ать на все приложение. там пятиметровіе функции встречаются. "на все случаи жизни". я их по возможности не трогаю и не заглядьіваю туда без крайней необходимости. касается только того, что новое добавляю.
А для этого нужно постоянно проводить рефакторинг
дьік кто ж тебе дозволит, милчеловек!? "продукт" уже лет 15 как "в поле", ничего крутить там в том, что "уже работает", нельзя. к тому же, говорят, ему жить еще года два-три. потом будет заменен на что-то другое (подозреваю, такое же одороблое, но єто будет точно уже без меня).
и новые компоненты добавлять, имея ввиду юнит тесты.
о чем же и спросил: как єто лучше обустроить? пока ничего кроме встроить в каждьій процесс вьізов функции unittest(), которьій перед чекином комментируется, а "для сабе" можно разкомментировать, и тестировать там что хочешь и как можешь. скорее всего так и поступлю, но вдруг кто идею получше подскажет.
работаю с vi + eclipse, один коллега - с нетбинз, другой - только с vi. в общем, все как в каменном веке.
Сейчас многие используют Visual Studio Code, эта среда есть под Linux. Или можно использовать CLion - https://www.jetbrains.com/clion/
Visual Studio Code:
CLion:
пока ничего кроме встроить в каждый процесс вызов функции unittest()
А что нельзя классы/функции из другого проекта вызвать?
https://en.wikipedia.org/wiki/List_of_unit_testing_framewo...
https://www.jetbrains.com/help/clion/unit-testing-tutorial...
и там имеются какие-нибудь встроенньіе средства для юниттестов?
и там имеются какие-нибудь встроенньіе средства для юниттестов?
Вряд ли, это лишь IDE, которые более удобнее и быстрее работают чем VIM, Eclipse и Netbeans. CLion коммерческая. Если хотите юнит-тесты смотрите на платные - допустим на Qt C++, вот тут про Unit Test написано - https://doc.qt.io/qt-6/qttestlib-tutorial1-example.html или Gnat Pro - https://www.adacore.com/gnatpro/comparison, ну Gnat Pro (смотрите на Enterprise) очень дорогая... надо почку продать чтобы Gnat Pro позволить себе купить. Когда гуглиш так - https://www.google.com/search?q=unit+test+for+c+++gcc&oq=unit+test+for+c+++gcc то ищит для Си а не Си++ допустим про какой-то libcheck - https://stackoverflow.com/questions/7208331/which-c-unit-test-framework см. https://libcheck.github.io/check/.
Хотя вот CLion - там есть Unit Test см. - https://www.jetbrains.com/help/clion/unit-testing-tutorial.html
PS:Меня бесит этот гнутый си++ (gcc), сам сижу на нём только на mingw.
что никакого "ide" не имеется.
-----
А как оно на тесты должно влиять? Ставишь что работает там где целевая система и вперед - тесты писать...
пока ничего кроме встроить в каждьій процесс вьізов функции unittest()
------
А это ты об чем?
вдруг кто идею получше подскажет.
------
система тестирования - отдельный тоолс.
См. NUnit, JUnit,
По С++ вроде это
- CppUnit
- Boost.Test
- CppUnitLite
- NanoCppUnit
- Unit++
- CxxTest
если бьі нечто вроде visual studio, qt creator`a или еще чего, то там имеются встроенньіе средства. здесь - нет
Пока ты лишь подчеркнул то, что понятия не имеешь как подойти к тестированию.
Для С++ тебе стоит глянуть в сторону google test и пройтись по их примерам, чтобы понять, как плясать дальше.
если бьі нечто вроде visual studio, qt creator`a или еще чего, то там имеются встроенньіе средства. здесь - нет.
Ни в одном IDE нет встроенных средств, которые бы помогали писать юнит-тесты. Ну если только сахар типа "создать тест для этой функции", в результате чего добавляется новый проект, новый класс и новая функция. Но врядли это помогает писать тесты :D
о чем же и спросил: как єто лучше обустроить?
Для начала прочитать про юнит-тесты и понять какие требования есть к коду, чтобы его можно было протестировать юнит-тестами.
пока ничего кроме встроить в каждьій процесс вьізов функции unittest()
Не совсем понятно каким образом вызов функции unittest() поможет что-то там протестировать.
которьій перед чекином комментируется, а "для сабе" можно разкомментировать
А можно воспользоваться препроцессором и не стрелять себе в ногу. Впрочем, никакого отношения к юнит-тестированию это не имеет.
Ни в одном IDE нет встроенных средств, которые бы помогали писать юнит-тесты.
Да но зато современная Visual Studio и Android Studio добавляет в проект по умолчанию юнит-тесты без моего ведомства.
Во-первых, это никак не упрощает написание унит-тестов :)
Во-вторых, не знаю как в Android Studio, а Visual Studio никакие юнит-тесты без моего ведома не добавляет. Я уж не говорю о том, что никто не зранит юнит-тесты в одном проекте с продуктивным кодом :) Юнит-тесты всегда находятся в другом проекте, поэтому добавлять в проет юнит-тесты - несусветная глупость.
Пациент выше очень забавный. Он уже меня по моему github'у проанализировал.
Пока ты лишь подчеркнул то, что понятия не имеешь как подойти к тестированию.
и єто - все, что есть сказать?
я не только продемонстрировал: я даже тему именно поєтому открьіл, если вьі обратили внимание. или почему? чтобьі что-то продемонстрировать, как вьі? надвание щек - не признак ума, знаний, опьіта или еще чего. скорее признак недостатка єтих качеств.
Сейчас многие используют Visual Studio Code, эта среда есть под Linux
она у меня установлена. под виндоус, правда. там такая политика у клиента, что установить можно лишь что-то из их "запасника". а там - старье, которое когда-то где-то набрали. визуал студио код мне не нравится. чтобьі что-то на нем полезное делать, здается мне, нужно кучу всяких дополнений установить. в общем, потратить массу времени и неизвестно, что в результате получится.
поприкидьівал сегодня, почитал там-сям, сформулировал для себя очевидное: юнит-тест должен беспроблемно вьіполняться и показівать, так ли работает тестируемое, как ожидается, или нет. можно в принципе писать их КАК УГОДНО. всякие фреймуорки облегчают жизнь (вовсе не обязательно!) тем, что содержат какие-то примочки, позволяющие "удобно" проверить результат, еще какие-то вещи. но если вьі напишете
юниттест без помощи специальньіх тулов, єто не означает, что пользьі от них меньше, надежность ниже, затрат больше, .... , чем созданньіе с помощью каких-то примочек, на освоение которьіх нужно тоже потратить время. так что в моем конкретном случае проще организовать тестирование без "умньіх приложений". а там видно будет. может ошибаюсь, а влезу - пожалею.
всякие фреймуорки облегчают жизнь
-----
Просто поверь - в большинстве случаев - СУЩЕСТВЕННО - облегчают жизнь.
А там где не облегчают - проблемы с архитектурой - писано должно быть с возможностью тестирования.
так что в моем конкретном случае проще организовать тестирование без "умньіх приложений"
-----
Возьми NUnit (CppUnit?) и напиши с десяток тестов - все будет видно.
а там видно будет. может ошибаюсь, а влезу - пожалею.
-----
Ну и зачем самому нарабатывать то, что уже 10-ки раз написано и отлажено?
Пожалеешь, разумеется.
Потому бери любой готовый инструмент и его используй.
нюнитом я из визуал студио
------
Есть стандалоне NUnit.
У меня в старой системе стоит.
linux cent-os 5.
------
У них есть(было) версия под луня, об чем тебе сказано много выше.
спасибо, может оказаться очень близко. завтра погляжу ближе.
зі. посмотрел, потьікался, нахрапом не получилось даже исходники склонить, не стал даже разбираться почему. мог бьі, конечно, дома сгрузить, на усб прихватить завтра с вобой. но "пошли они нафуй!"
очень ловко воткнул в main() вьізов "юниттєстов", которій оказьівается "без тела", если не определена некая переменная. а ее определение закомментировано, так что и об'ема не добавилось (хотя на єто плевать, єто просто чтоб никто не кривил рожу).
готовится "окружение", производится вьізов тестируемого, и никаких удобньіх ассертов, просто где-то так:
some_parameter p;
p.a = 1;
p.b = 2;
...
int value = foo (&p);
cout << "foo with 1 & 2 returnes " << value << " 10 expected" << endl;
и т.д. возможно, неуклюже, но сразу вьіловил один свой глюк и пару коллега привнес в мою простейшую функцию за время моего отсутствия.
конечно, что-нибудь тотально-глобальное, еще и удобное, бьіло бьі лучше, но пока вот так.