C++単体テストTIPS ~みんなともだち~
テストコード書いてると対象のクラスのprivateメンバの値が知りたいときがよくある。
class MyTest; #define private \ friend class ::MyTest; private #include <TargetClass.h> #include <cxxtest/TestSuite.h> class MyTest : public CxxTest::TestSuite { public: void testHoge() { auto p = new TargetClass(); TS_ASSERT_EQUAL(100, p->privateMember_); // friendになってるのでprivateにもアクセスし放題 } };
こんな感じ。
最初はprivateをpublicに置き換えようとしたが、そうするとprivateメソッドのマングルが変わってしまいリンクエラーになったのでfriendを使うことにした。
テストが捗る。