使对象可用于所有方法c ++

时间:2011-10-18 14:41:58

标签: c++

任何人都可以帮我吗?基本上我有一个测试类,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(){/*...*/}
};

有没有办法将它放在某种“全局方法”中,以便我可以从方法中访问它们?

我很难解释事情如此抱歉并提前感谢

1 个答案:

答案 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。但是,上述方法应该适用于任何框架。