我正在开发一个大型 C++ 项目,对于安全关键的航空航天软件,我们有大约 50 名开发人员在从事该项目,所以它当然是巨大的,我们在 Red Hat Linux 上使用 C++ 以及一点点 Java 和 Python,并且系统的一小部分也托管在 IBM AIX Unix 和 Windows 上。
我最近被聘用到这个项目中,发现 UnitTest++ 被用于进行单元测试。让我感到困惑的一件事是 UnitTest++ 如何使用宏。它使用宏定义派生类,然后调用宏调用基类方法。这是非常不寻常的,我试图在一个小的示例 C++ 程序中重现同样的事情,但无法让它工作。注意示例程序的源代码。由于保密协议,我无法在我们的项目中发布特定代码。
应该有办法让它工作,它在我们的单元测试中使用 UnitTest++
// macro2.cpp
#include <iostream>
using namespace std;
class TestBaseClass
{
public:
// class constructor
TestBaseClass() : num1(3), num2(8)
{
cout << "Object Created" << endl;
}
// class properties
int num1;
int num2;
// class method
void testMethod()
{
cout << "testMethod() called" << endl;
}
// class destructor
~TestBaseClass()
{
cout << "Object Destroyed" << endl;
}
};
#define TEST_MACRO(TestBaseClass) \
class TestDerivedClass : public TestBaseClass \
{ \
public: \
TestDerivedClass() { num1 = 10; } \
}; \
int main()
{
// call macro base class method
TEST_MACRO(TestBaseClass)
{
testMethod();
}
return 0;
}