LINUX.ORG.RU

Смешивание C & C++, при написании Unit тестов

 , ,


0

2

Мы с коллегой поспорили, плохо ли писать юнит тесты на C++ для библиотеки которая пишется на C.

Хотелось бы услышать мнение со стороны. Желательно сопровождаемое пруф линками.



Последнее исправление: cetjs2 (всего исправлений: 1)

а в чем проблема?

Stil ★★★★★
()

Таки поддержу товарища Stil, в чём проблема? Где, по вашему, может возникнуть затык?

gavlig ★★★
()

Мы в своем проекте так делаем. Брат жив.

kulti ★★
()

Сам так делал, котёнок жив, проблем никаких.

yoghurt ★★★★★
()

Если, например, пользоваться gtest'ом, то ты их просто в принципе на С не напишешь. В чём проблема-то?

Gvidon ★★★★
()
Ответ на: комментарий от Gvidon

Вопрос скоре в том нужно ли запариваться тем что бы искать альтернативы gtest'у.

Где, по вашему, может возникнуть затык?

Собственно в этом и есть мой вопрос :)
Ибо доказать что затыка нет, сложнее, чем привести пруф с затыком.

batbko
() автор топика
Ответ на: комментарий от batbko

Например gtest(а точнее gmock) не очень совместим с некоторыми библиотеками (например Poco), ну или они не очень с ним совместимы - это как посмотреть.

А вот есть ли какие то документированные отличия в результате компиляции кода скомпилированно на C и на C++ (не считая дефолтных соглашений о вызовах), которые могут привести к каким то сложно-выявлямым ошибкам? Или какие то нюансы работы с C библиотеками?

batbko
() автор топика

да хоть на лиспе, никакой разницы

wota ★★
()

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

Anon
()
Ответ на: комментарий от batbko

А вот есть ли какие то документированные отличия в результате компиляции кода скомпилированно на C и на C++

Дык, сишный код и в аппликейшине и в юнит-тестах будет сишным компилятором скомпилен.

kulti ★★
()
Ответ на: комментарий от kulti

оО, разве, а не плюсовым в тестах и сишным в либе? Ибо собираеться оно всё CMake и он вроде по честному определяет что чем собирать, вроде как не ошибался покашто. Мы же не сорцы в тестах юзаем, а всё кошерно - подключаем либу и тестируем через её интерфейс.

batbko
() автор топика
Ответ на: комментарий от gavlig

Есть пруф с затыком - значит нельзя комбинировать, пруфов нет - можно.

Собственно жду пока кто нибудь предоставит пруф, т.к. самим у нас привести его не удалось, решили вот сообщество подраспросить. Если через какое то время никто так и не покажет что сиё есть плохо значит жить в проекте гугл тестам, а коли найдеться кейс который показывает что можно не тухло накосячить то придеться искать альтернативы.

batbko
() автор топика
Ответ на: комментарий от batbko

Тогда вдвойне непонятно, чего ты паришься =) Раз либа уже собрана «правильным» компилятором, то она и в тестах и в приложении одинаково работает.

kulti ★★
()
Ответ на: комментарий от gavlig

ну вот еще один.

«а в чем проблема?»

как этот ужас выглядит
ужас

с чего вдруг?

просто добавляется +n .h файлов с extern «C» {} +n .cpp файлов, в которых оборачиваются классы и прочее в сишные функции. ничего страшного.

Stil ★★★★★
()
Ответ на: комментарий от Stil

то есть в цпп-шках создаются нужные объекты, если они не статичные, и их методы выдаются как функции? Пардон, никогда подобным не занимался, поэтому интересуюсь

gavlig ★★★
()
Последнее исправление: gavlig (всего исправлений: 1)
Ответ на: комментарий от gavlig

создаются сишные обертки типа void ClassName_methodName(ClassName *this, int arg)

внутри - что-то типа { this->methodName(arg); }

Stil ★★★★★
()

Плохо ли, хорошо ли - какая разница, если все работает как запланировано? А если никого не напрягает - то вообще прекрасно. Но да, лучше из мерзких плюсов в годный си ничего не тащить - а то расслабишься и не заметишь как тебя использовали

minakov ★★★★★
()
Ответ на: комментарий от Stil

А вот нифига! Я знаю, что по идее на плюсах можно писать хороший код. Но их нужно использовать тогда, когда действительно аналогичный код на сях будет в несколько раз больше. А когда тупо фигачат классы вместо структур, это извращение!

Зато новая апогишная библиотека хотя бы содержит проверки. Старая была совсем уродской (пришлось сильно ее перепиливать), в большинстве функций не было никаких проверок: читаешь что-то с камеры, получаешь фиг. И не знаешь, из-за чего.

Anon
()
Ответ на: комментарий от batbko

дядьки могут делать всё, что хотят, но мне кажется, что если приходится городить такую шнягу, значит кто-то точно что-то делает не так.

gavlig ★★★
()
Ответ на: комментарий от batbko

Вообщем,раз уж по истечении почти недели никто новых примеров «затыков» не привел, получается что шанс нарваться на что то действительно косячное и не ловящаеся ещё и функциональными тестами крайне мал, а значит пофик.
Всем спасибо.

batbko
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.