GMock لا تجمع - GTEST_EXCLUSIVE_LOCK_REQUIRED يبدو أن لا يكون المعرف

StackOverflow https://stackoverflow.com//questions/22065098

سؤال

أنا أحاول بناء بسيط سخر الدرجة

#include "interpolation.hpp"

#include <gtest/gtest.h>
#include <gmock/gmock.h>

class MockInterp1D : public Interp1DBase {
public:
    MOCK_METHOD1(evaluateAt, double(double));
    MOCK_METHOD2(evaluateAt, double(double, int));
};

استنادا إلى ما يلي قاعدة الطبقة

class Interp1DBase {
public:
    virtual double evaluateAt(double) const = 0;
    virtual double evaluateAt(double, int) const = 0;
    virtual ~Interp1DBase() { };
};

باستخدام جوجل يسخر.عندما أحاول تجميع الاختبارات حيث وهمية تستخدم ، أحصل على الخطأ التالي:

In file included from /usr/include/gmock/gmock-generated-function-mockers.h:43:0,
                 from /usr/include/gmock/gmock.h:61,
                 from /home/tlycken/exjobb/Code/alpha-orbit-follower/test/interpolation/interpolation-mocks.hpp:4,
                 from /home/tlycken/exjobb/Code/alpha-orbit-follower/test/physics/B-field-tests.hpp:6,
                 from /home/tlycken/exjobb/Code/alpha-orbit-follower/test/physics/B-field-tests.cpp:2:
/usr/include/gmock/gmock-spec-builders.h:134:41: error: expected ‘;’ at end of member declaration
   bool VerifyAndClearExpectationsLocked()
                                         ^

ثم مئات مماثلة جملة أو تعريف الأخطاء لافتا إلى الملفات داخل GMock.

أخذت نظرة على gmock-spec-builder.h:134, و وجدت ما يلي (في السياق):

// Verifies that all expectations on this mock function have been
// satisfied.  Reports one or more Google Test non-fatal failures
// and returns false if not.
bool VerifyAndClearExpectationsLocked()
    GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex);

الذي قادني إلى الاعتقاد بأن GTEST_EXCLUSIVE_LOCK_REQUIRED_ قد يكون ماكرو لسبب ما لم تكن محددة.وبالفعل بعد حفر من خلال كل رأس وشملت الملفات إما من gmock/gmock.h أو gtest/gtest.h ما زلت لم يتم العثور على تعريف هذا الماكرو.

ماذا أفعل الخطأ هنا ؟


تحديث:

لقد كنت قادرا على إنتاج بسيطة حتى الحد الأدنى على سبيل المثال:

// in file mock-test.cpp
#include <gmock/gmock.h>
// Yeah, that's the only content

ترجمة مع

g++ -o mock-test.o -c mock-test.cpp

يسبب نفس الخطأ.

لقد قمت بتثبيت GMock من خلال sudo apt-get install google-mock, الذي أعطاني مجلد تحت /usr/src أين يمكنني تشغيل cmake . تليها make لإنشاء مكتبة الملفات التي نسخت إلى /usr/lib.رأس الملفات التي تم بالفعل في /usr/include حتى أنني لم أفعل أي شيء عنها يدويا.

هل كانت مفيدة؟

المحلول

لدي نفس الخطأ عندما حاولت تجميع باستخدام gmock 1.7 مع gtest 1.6.تأكد من أنك تستخدم نفس الإصدار من gtest.

نصائح أخرى

أنا لا أعرف كيفية استخدام g-وهمية في gcc.لكن في الأساس نحن نستخدم في ويندوز مثل هذا.الفئة التعاريف حق.هل استخدام هذه الوظائف مثل

EXPECT_CALL(classobj, exact functionname as it looks in definition).AtLeast(Times(0)).Return(0);

ثم

classobj.exact functionname as it looks in definition()

جرب هذا أعتقد أنه يجب أن تعمل.إذا كنت تريد ذلك بالتفصيل, فقط اسمحوا لي أن أعرف وأنا سوف توسع نفسه مع بعض الأمثلة النموذجية.

هناك مصادر مناسبة & رؤوس في /usr/src/gmock مجلد.

عملك هو فقط الكتابة فوق المحتوى كله المجلدات:

/usr/src/gmock/gtest/src -> /usr/src/gtest/src
/usr/src/gmock/gtest/cmake -> /usr/src/gtest/cmake
/usr/src/gmock/gtest/CMakeLists.txt-> /usr/src/gtest/CMakeLists.txt

/usr/src/gmock/gtest/include/gtest -> /usr/include/gtest/
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top