任何人都可以帮我吗?基本上我有一个测试类,wihtin这个测试类我有很多方法都使用相同类型的设置。让我举例告诉你:
class Test:public CxxTest::TestSuite
{
public:
void Test1(){/*...*/}
void Test2(){/*...*/}
};
每种测试方法都需要相同类型的设置:
Class c_objectName = AnotherClass::method("c_name","c_name","c_name");
class c_newObjectName = AnotherCLass::create(c_objectName);
我目前正在每一种方法中设置它,因为上面我用“c _...”开头的每一个都需要不同。
我试图创建一个“全局方法”,每次都会接受一个字符串重命名,但是我似乎无法从方法调用中访问它们。我尝试了以下方法:
class Test:public CxxTest::TestSuite
{
public:
void method()
{ Class c_objectName = AnotherClass::method("c_name","c_name","c_name"); <--- cant access these
Class c_newObjectName = AnotherClass::create(c_objectName);
}
void Test1(){/*...*/}
void Test2(){/*...*/}
};
有没有办法将它放在某种“全局方法”中,以便我可以从方法中访问它们?
我很难解释事情如此抱歉并提前感谢
答案 0 :(得分:1)
我无法对问题进行反复思考,但看起来这样的事情会有所帮助:
struct TestFixture
{
Class c_objectName;
Class c_newObjectName;
};
TestFixture makeFixture()
{
TestFixture fixture;
fixture.c_objectName = new Class("c_name","c_name","c_name");
fixture.c_newObjectName = create(c_objectName);
return fixture;
}
(假设你的Class(classes?)是可复制的。如果没有,返回一个指向TestFixture的新实例的指针或类似于scoped_ptr
的指针然后你可以在你的测试方法中使用它:
void Test1()
{
TestFixture fixture = makeFixture();
// use fixture.c_objectName etc.
如果您不介意共享数据,您可以将它们设为Test类。
编辑 哦,我刚刚意识到您正在使用CxxTest ,which probably has a better way of creating fixtures/setup/teardown for unit tests。但是,上述方法应该适用于任何框架。