В чем разница между gmock_main и gtest_main?

Я заметил, что некоторые проекты ссылаются на gtest_main-mdd.lib, а другие на gmock_maind.lib в моей установке Visual Studio 2010, и хотел узнать, в чем разница между двумя библиотеками?


person nonsensickle    schedule 26.06.2015    source источник
comment
Обратитесь к этой ссылке - stackoverflow.com/questions/13696376/   -  person Abhishek    schedule 26.06.2015
comment
@Abhishek Возможно, я не ясно выразился. Я понимаю разницу между двумя фреймворками, но я хочу знать, почему я хочу ссылаться на один, а не на другой? Или, проще говоря, является ли gmock_maind.lib расширенным набором функций gtest_main-mdd.lib?   -  person nonsensickle    schedule 26.06.2015


Ответы (1)


В проектах не обязательно использовать и gtest, и gmock, но можно выбрать использование gtest без gmock или наоборот. В любом случае вам нужен способ ввести основную функцию, поэтому у вас есть 2 библиотеки для ее введения.

В любом случае, если вы используете оба, то лучше использовать gmock_maind.lib, так как у него есть инициализация для фиктивной среды, а также для тестовой среды. Пока gtest_main-mdd.lib инициализирует только тестовую часть. Посмотрите на gmock_main.cc и gtest_main.cc

person ixSci    schedule 26.06.2015
comment
Значит ли это, что gmock_maind.lib предполагает, что вы используете его вместе с gtest? Если нет, и вы делаете ссылку на обе, как вы можете иметь две функции main? Это делается в линкере через слабые символы или как? - person nonsensickle; 26.06.2015
comment
@nonsensickle, обе эти библиотеки предназначены только для инициализации. Вы можете вообще их не использовать, можете создать свой main и самостоятельно добавить необходимую инициализацию. Но как только вы использовали любую из библиотек, у вас есть основная функция из этой библиотеки. Это только одна функция main в каждой библиотеке, поэтому вы не можете использовать обе библиотеки одновременно, а только по одной за раз. Gmock знает о gtest и вызывает для него функции инициализации, тогда как Gtest ничего не знает о gmock и, следовательно, не инициализирует его. - person ixSci; 26.06.2015