我使用谷歌測試/模擬框架單元測試後的值。我調用我在SetUp函數中測試的基類的構造函數。我使用SetUp中生成的對象來設置類的某些私有成員,以修改我的測試行爲。當我的測試函數調用我正在測試的基本函數時,私有成員變量的地址會發生變化,因此測試會發生錯誤。我需要找出這種行爲的原因,因爲它不會與我正在測試的另一個類似文件發生。測試對象不保持在谷歌測試由構造被傳遞
//Class to test
//base code
//header file
class To_Test
{
friend My_test_class;
private:
TestStruct* sptr; //pointer to a structure, set by some random function elsewhere
public:
To_Test();
~To_Test();
boolean Function_1();
}
//cpp file
To_Test::To_Test()
{
sptr = NULL;
}
boolean To_Test::Function_1()
{
boolean variable;
variable = sptr->bool;
if (variable)
{
do something
return TRUE;
}
return FALSE;
}
//Test framework
//test class header file
#include "To_Test.h"
class My_test_class : public :: testing :: Test
{
public:
To_Test *ToTestObj;
virtual void SetUp();
void Test_Function_1();
}
//gtest.cpp file
My_test_class::SetUp()
{
ToTestObj = New To_test;
}
My_test_class::Test_Function_1()
{
ToTestObject->sptr = (RandomStruct*) malloc (sizeof(RandomStruct));
sptr->bool = TRUE;
ASSERT_TRUE(TRUE = ToTestObject->Function_1());
}
ToTestObject的SETUP中的地址,在Test_Function_1和Function_1是相同的。 然而,特徵碼指針的安裝程序和Test_Function_1地址不同於Function_1的不同。因此,當餘步驟通過Function_1當測試執行時,特徵碼指針沒有記憶,因爲它指向NULL和當它試圖在sptr-> BOOL訪問存儲器中的執行失敗。
我不知道是什麼原因造成了這個問題。任何幫助真的很感激!
這是不是一個真正的關於googletest問題 –