我想單元測試我正在構建的C++應用程序,並且在類中使用時遇到初始化數組的問題。我已經嘗試了很多加載這些信息的不同方法,只有那些工作效率低下/不適合。類中的char數組初始化
這裏是十六進制陣列,我(隨機的部分)
0x24,0x54,0x3b,0x72,0x8b,0x03,0x24,0x29,0x23,0x43,0x66,0x22,0x53,0x41,0x11,0x62,0x10
和頭文件爲我的單元測試:
class MessageParsingTest : public CPPUNIT_NS::TestFixture {
CPPUNIT_TEST_SUITE(MessageParsingTest);
CPPUNIT_TEST(testIdentifyFirstMessageType);
CPPUNIT_TEST_SUITE_END();
public:
MessageParsingTest();
virtual ~MessageParsingTest();
void setUp();
void tearDown();
private:
void testIdentifyFirstMessageType();
void testIdentifySecondMessageType();
// data members for the hex array
unsigned char firstMessage[1500];
};
然後在我的測試用例設置功能;
void MessageParsingTest::setUp() {
firstMessage = {0x24,0x54,0x3b,0x72,0x8b,0x03,0x24,0x29,0x23,0x43,0x66,0x22,0x53,0x41,0x11,0x62,0x10};
}
這是我最新的嘗試失敗,它說compilcation在其無效的,如我所料,但在這一點上,我是想什麼。
我也試過類似的東西(所有設置功能)
firstMessage << "\0x24\0x54\0x3b\0x72\0x8b\0x03\0x24\0x29\0x23\0x43\0x66\0x22\0x53\0x41\0x11\0x62\0x10";
firstMessage[1500] = "\0x24\0x54\0x3b\0x72\0x8b\0x03\0x24\0x29\0x23\0x43\0x66\0x22\0x53\0x41\0x11\0x62\0x10";
和其他一些瘋狂的方式,有誰知道加載該數據的正確方法?到目前爲止,我使用它的唯一方法是使用沒有數據成員聲明並直接定義它,並在一行中初始化(但之後我無法訪問測試用例),或者像firstMessage[0] = 0x24;
一樣一個一個地執行。
我明白這樣做會有一個簡單而適當的方法,並考慮應用程序的實際作用,這部分應該是最簡單的。
我試圖方法1。首先,當我向編譯器選項添加'-std = C++ 0x'時,它工作正常,但選項2從來沒有工作,但似乎更具吸引力,我是否正確地在頭文件中的類定義中添加此行? – Scriptable 2015-02-23 15:54:18
請參閱編輯,我詳細的語法。 – 2015-02-23 16:01:35
@llya感謝您的幫助。但是當我在構造函數中通過'const unsigned char MessageParsingTest :: kFirstMessage [] = ...'方法得到錯誤時,這個靜態方法會告訴我錯誤:函數內部不允許定義或重新聲明kFirstMessage。我喜歡在C \ C++中工作,但有時候最簡單的事情可能是一種正確的痛苦! – Scriptable 2015-02-23 16:20:07