我想单元测试我正在构建的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