unit tests. linux. c++
"просто код". старющий. его много. никто не будет все єто дерьмо юниттестировать. но хотелось бьі то, что "новое" туда впаиваю, тестировалось. что есть чтобі попроще? проект - просто код. никаких фреймуорков и особьіх технологий. я работаю с vi + eclipse, один коллега - с нетбинз, другой - только с 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 никакие юнит-тесты без моего ведома не добавляет. Я уж не говорю о том, что никто не зранит юнит-тесты в одном проекте с продуктивным кодом :) Юнит-тесты всегда находятся в другом проекте, поэтому добавлять в проет юнит-тесты - несусветная глупость.
Пока ты лишь подчеркнул то, что понятия не имеешь как подойти к тестированию.
и єто - все, что есть сказать?
я не только продемонстрировал: я даже тему именно поєтому открьіл, если вьі обратили внимание. или почему? чтобьі что-то продемонстрировать, как вьі? надвание щек - не признак ума, знаний, опьіта или еще чего. скорее признак недостатка єтих качеств.
Сейчас многие используют Visual Studio Code, эта среда есть под Linux
она у меня установлена. под виндоус, правда. там такая политика у клиента, что установить можно лишь что-то из их "запасника". а там - старье, которое когда-то где-то набрали. визуал студио код мне не нравится. чтобьі что-то на нем полезное делать, здается мне, нужно кучу всяких дополнений установить. в общем, потратить массу времени и неизвестно, что в результате получится.
поприкидьівал сегодня, почитал там-сям, сформулировал для себя очевидное: юнит-тест должен беспроблемно вьіполняться и показівать, так ли работает тестируемое, как ожидается, или нет. можно в принципе писать их КАК УГОДНО. всякие фреймуорки облегчают жизнь (вовсе не обязательно!) тем, что содержат какие-то примочки, позволяющие "удобно" проверить результат, еще какие-то вещи. но если вьі напишете
юниттест без помощи специальньіх тулов, єто не означает, что пользьі от них меньше, надежность ниже, затрат больше, .... , чем созданньіе с помощью каких-то примочек, на освоение которьіх нужно тоже потратить время. так что в моем конкретном случае проще организовать тестирование без "умньіх приложений". а там видно будет. может ошибаюсь, а влезу - пожалею.
так что в моем конкретном случае проще организовать тестирование без "умньіх приложений"
-----
Возьми NUnit (CppUnit?) и напиши с десяток тестов - все будет видно.
а там видно будет. может ошибаюсь, а влезу - пожалею.
-----
Ну и зачем самому нарабатывать то, что уже 10-ки раз написано и отлажено?
Пожалеешь, разумеется.
Потому бери любой готовый инструмент и его используй.