2
プライベートメンバーにアクセスするのに苦労しています。ここに私のコードです。 GoogleTestでプライベートメンバーにアクセスする
#include "UnitTests.h"
#define TEST_FRIENDS \
friend class TestCustomUnitTest_hello_Test;
#include "LibToTest.h"
TEST(TestCustomUnitTest, hello)
{
LibToTestNamespace::LibToTest ltt;
ltt.mInt = 5;
ltt.GetMyInt();
}
#pragma once
#ifndef TEST_FRIENDS
#define TEST_FRIENDS
#endif
namespace LibToTestNamespace
{
class LibToTest
{
public:
double Add(double, double);
private:
TEST_FRIENDS;
int GetMyInt();
int mInt;
};
}
と
は、私が "クラスで宣言されたプライベートメンバにアクセスすることはできません" エラーが発生します。 TEST_FRIENDSが正しく置き換えられないように、ライブラリが最初にビルドされると思っていますか?しかし、単体テストがライブラリに依存する場合、常に最初にビルドされますか?
、あなたは、常に前処理で見ることができます'-E'フラグを使用して出力します。私はTEST_FRIENDS定義を一箇所に置いてテストビルドでのみ定義されている '-DTESTING'フラグなどに依存することをお勧めします – xaxxon
ユニットテストではプライベートメンバーにアクセスする必要はありません。あなたは公共のインターフェイスを実行する必要があります – user4581301
@ user4581301何人かの人々は、他の人はそれに同意しないと言う。普遍的に受け入れられる真実ではありません。 – xaxxon