Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

unit tests. linux. c++

487  1 2 все
  max2_2000 местный житель04.07.22 18:00
NEW 04.07.22 18:00 

"просто код". старющий. его много. никто не будет все єто дерьмо юниттестировать. но хотелось бьі то, что "новое" туда впаиваю, тестировалось. что есть чтобі попроще? проект - просто код. никаких фреймуорков и особьіх технологий. я работаю с vi + eclipse, один коллега - с нетбинз, другой - только с vi. в общем, все как в каменном веке. но кое-что бьі юниттестировал.

#1 
UVV старожил04.07.22 20:34
NEW 04.07.22 20:34 
в ответ max2_2000 04.07.22 18:00

Юнит тестам пофигу, пишется код в vi или в браузере. Главное, чтобы архитектура приложения позволяла проводить юнит тесты. А для этого нужно постоянно проводить рефакторинг и новые компоненты добавлять, имея ввиду юнит тесты.

#2 
  max2_2000 местный житель04.07.22 20:52
NEW 04.07.22 20:52 
в ответ UVV 04.07.22 20:34
Юнит тестам пофигу, пишется код в vi или в браузере.

разумеется. я єто упомянул, чтобьі подчеркнуть, что никакого "ide" не имеется. если бьі нечто вроде visual studio, qt creator`a или еще чего, то там имеются встроенньіе средства. здесь - нет.


Главное, чтобы архитектура приложения позволяла проводить юнит тесты.

да мне наср*ать на все приложение. там пятиметровіе функции встречаются. "на все случаи жизни". я их по возможности не трогаю и не заглядьіваю туда без крайней необходимости. касается только того, что новое добавляю.


А для этого нужно постоянно проводить рефакторинг

дьік кто ж тебе дозволит, милчеловек!? "продукт" уже лет 15 как "в поле", ничего крутить там в том, что "уже работает", нельзя. к тому же, говорят, ему жить еще года два-три. потом будет заменен на что-то другое (подозреваю, такое же одороблое, но єто будет точно уже без меня).


и новые компоненты добавлять, имея ввиду юнит тесты.

о чем же и спросил: как єто лучше обустроить? пока ничего кроме встроить в каждьій процесс вьізов функции unittest(), которьій перед чекином комментируется, а "для сабе" можно разкомментировать, и тестировать там что хочешь и как можешь. скорее всего так и поступлю, но вдруг кто идею получше подскажет.


#3 
uscheswoi_82 коренной житель04.07.22 20:58
NEW 04.07.22 20:58 
в ответ max2_2000 04.07.22 18:00
работаю с vi + eclipse, один коллега - с нетбинз, другой - только с vi. в общем, все как в каменном веке.

Сейчас многие используют Visual Studio Code, эта среда есть под Linux. Или можно использовать CLion - https://www.jetbrains.com/clion/

Visual Studio Code:

CLion:



Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#4 
AlexNek патриот04.07.22 21:06
AlexNek
NEW 04.07.22 21:06 
в ответ max2_2000 04.07.22 20:52
пока ничего кроме встроить в каждый процесс вызов функции unittest()

А что нельзя классы/функции из другого проекта вызвать?

https://en.wikipedia.org/wiki/List_of_unit_testing_framewo...

https://www.jetbrains.com/help/clion/unit-testing-tutorial...

https://eecs280staff.github.io/unit_test_framework/

#5 
  max2_2000 местный житель04.07.22 21:07
NEW 04.07.22 21:07 
в ответ uscheswoi_82 04.07.22 20:58

и там имеются какие-нибудь встроенньіе средства для юниттестов?

#6 
uscheswoi_82 коренной житель05.07.22 00:25
NEW 05.07.22 00:25 
в ответ max2_2000 04.07.22 21:07
и там имеются какие-нибудь встроенньіе средства для юниттестов?

Вряд ли, это лишь 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.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#7 
Murr патриот05.07.22 02:52
Murr
NEW 05.07.22 02:52 
в ответ max2_2000 04.07.22 20:52

что никакого "ide" не имеется.

-----

А как оно на тесты должно влиять? Ставишь что работает там где целевая система и вперед - тесты писать...


пока ничего кроме встроить в каждьій процесс вьізов функции unittest()

------

А это ты об чем?


вдруг кто идею получше подскажет.

------

система тестирования - отдельный тоолс.

См. NUnit, JUnit,

По С++ вроде это

  • CppUnit
  • Boost.Test
  • CppUnitLite
  • NanoCppUnit
  • Unit++
  • CxxTest

#8 
UVV старожил05.07.22 07:09
NEW 05.07.22 07:09 
в ответ max2_2000 04.07.22 20:52
если бьі нечто вроде visual studio, qt creator`a или еще чего, то там имеются встроенньіе средства. здесь - нет

Пока ты лишь подчеркнул то, что понятия не имеешь как подойти к тестированию.

Для С++ тебе стоит глянуть в сторону google test и пройтись по их примерам, чтобы понять, как плясать дальше.

#9 
Программист коренной житель05.07.22 08:00
05.07.22 08:00 
в ответ max2_2000 04.07.22 20:52, Последний раз изменено 05.07.22 08:35 (Программист)
если бьі нечто вроде visual studio, qt creator`a или еще чего, то там имеются встроенньіе средства. здесь - нет.

Ни в одном IDE нет встроенных средств, которые бы помогали писать юнит-тесты. Ну если только сахар типа "создать тест для этой функции", в результате чего добавляется новый проект, новый класс и новая функция. Но врядли это помогает писать тесты :D


о чем же и спросил: как єто лучше обустроить?

Для начала прочитать про юнит-тесты и понять какие требования есть к коду, чтобы его можно было протестировать юнит-тестами.


пока ничего кроме встроить в каждьій процесс вьізов функции unittest()

Не совсем понятно каким образом вызов функции unittest() поможет что-то там протестировать.


которьій перед чекином комментируется, а "для сабе" можно разкомментировать

А можно воспользоваться препроцессором и не стрелять себе в ногу. Впрочем, никакого отношения к юнит-тестированию это не имеет.

#10 
uscheswoi_82 коренной житель05.07.22 09:20
NEW 05.07.22 09:20 
в ответ Программист 05.07.22 08:00
Ни в одном IDE нет встроенных средств, которые бы помогали писать юнит-тесты.

Да но зато современная Visual Studio и Android Studio добавляет в проект по умолчанию юнит-тесты без моего ведомства.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#11 
Программист коренной житель05.07.22 11:06
NEW 05.07.22 11:06 
в ответ uscheswoi_82 05.07.22 09:20

Во-первых, это никак не упрощает написание унит-тестов :)

Во-вторых, не знаю как в Android Studio, а Visual Studio никакие юнит-тесты без моего ведома не добавляет. Я уж не говорю о том, что никто не зранит юнит-тесты в одном проекте с продуктивным кодом :) Юнит-тесты всегда находятся в другом проекте, поэтому добавлять в проет юнит-тесты - несусветная глупость.

#12 
UVV старожил05.07.22 14:44
NEW 05.07.22 14:44 
в ответ Программист 05.07.22 11:06

Пациент выше очень забавный. Он уже меня по моему github'у проанализировал.

#13 
Программист коренной житель05.07.22 14:54
NEW 05.07.22 14:54 
в ответ UVV 05.07.22 14:44

И каков его вердикт upили down :D

#14 
Murr патриот05.07.22 17:29
Murr
NEW 05.07.22 17:29 
в ответ uscheswoi_82 05.07.22 09:20

современная Visual Studi

-----

У меня последняя Ультима - сама не добавляет ничего.

#15 
  max2_2000 местный житель05.07.22 18:52
NEW 05.07.22 18:52 
в ответ UVV 05.07.22 07:09
Пока ты лишь подчеркнул то, что понятия не имеешь как подойти к тестированию.

и єто - все, что есть сказать?

я не только продемонстрировал: я даже тему именно поєтому открьіл, если вьі обратили внимание. или почему? чтобьі что-то продемонстрировать, как вьі? надвание щек - не признак ума, знаний, опьіта или еще чего. скорее признак недостатка єтих качеств.


#16 
  max2_2000 местный житель05.07.22 19:03
NEW 05.07.22 19:03 
в ответ uscheswoi_82 04.07.22 20:58
Сейчас многие используют Visual Studio Code, эта среда есть под Linux

она у меня установлена. под виндоус, правда. там такая политика у клиента, что установить можно лишь что-то из их "запасника". а там - старье, которое когда-то где-то набрали. визуал студио код мне не нравится. чтобьі что-то на нем полезное делать, здается мне, нужно кучу всяких дополнений установить. в общем, потратить массу времени и неизвестно, что в результате получится.

поприкидьівал сегодня, почитал там-сям, сформулировал для себя очевидное: юнит-тест должен беспроблемно вьіполняться и показівать, так ли работает тестируемое, как ожидается, или нет. можно в принципе писать их КАК УГОДНО. всякие фреймуорки облегчают жизнь (вовсе не обязательно!) тем, что содержат какие-то примочки, позволяющие "удобно" проверить результат, еще какие-то вещи. но если вьі напишете юниттест без помощи специальньіх тулов, єто не означает, что пользьі от них меньше, надежность ниже, затрат больше, .... , чем созданньіе с помощью каких-то примочек, на освоение которьіх нужно тоже потратить время. так что в моем конкретном случае проще организовать тестирование без "умньіх приложений". а там видно будет. может ошибаюсь, а влезу - пожалею.


#17 
Murr патриот05.07.22 19:37
Murr
NEW 05.07.22 19:37 
в ответ max2_2000 05.07.22 19:03

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

-----

Просто поверь - в большинстве случаев - СУЩЕСТВЕННО - облегчают жизнь.

А там где не облегчают - проблемы с архитектурой - писано должно быть с возможностью тестирования.

#18 
Murr патриот05.07.22 19:42
Murr
NEW 05.07.22 19:42 
в ответ max2_2000 05.07.22 19:03

так что в моем конкретном случае проще организовать тестирование без "умньіх приложений"

-----

Возьми NUnit (CppUnit?) и напиши с десяток тестов - все будет видно.


а там видно будет. может ошибаюсь, а влезу - пожалею.

-----

Ну и зачем самому нарабатывать то, что уже 10-ки раз написано и отлажено?

Пожалеешь, разумеется.

Потому бери любой готовый инструмент и его используй.

#19 
  max2_2000 местный житель05.07.22 19:58
NEW 05.07.22 19:58 
в ответ Murr 05.07.22 19:42
Возьми NUnit (CppUnit?) и напиши с десяток тестов - все будет видно.

а вьі заглавие темьі правильно прочли? нюнитом я из визуал студио очень удобно писал тестьі. очень удобно. но у меня - КОНКРЕТНЬІЕ ОБСТОЯТЕЛЬСТВА. linux cent-os 5.

такого я тоже уже начитался. еще до того как тему открьіть.


#20 
1 2 все