c++ - 我如何对工厂进行单元测试?

标签 c++ unit-testing tdd factory cppunit

我通过为我的所有类提供一个接口(interface)来对我的类进行单元测试。这些接口(interface)依次有自己的模拟。

但是假设我有以下内容:

class IData
{
  GetData()
}

class IOnScreenDataCalculator
{
  Calculate(IData)
}

class OnScreenData : IOnScreenData
{
  OnScreenData(PTR_T(IData), PTR_T(IOnScreenDataCalculator))

    enter code here

  GetOnScreenData()
}

现在假设我希望拥有多个用于不同类型数据和计算器的工厂。我如何对这些工厂进行单元测试,我的工厂如下:

OnScreenBlueDataForWideScreenFactory
{
  PTR:T(IOnScreenData) Create()
  {
    PTR_T(Data) data = ptr_t(new BlueData());
    PTR_T(IOnScreenDataCalculator) calculator = ptr_t(new WideScreenDataCalculator());
    PTR_T(IOnScreenData) onScreenData = ptr_t(new WideScreenDataCalculator(data, calculator ));

    return onScreenData;
  }
}

谢谢你的帮助,

巴里。

最佳答案

我不确定代码片段是否真的是 C++,但示例应该是这样的:

class ExampleIface
{
  public:
    virtual ~ExampleIface() {}
    virtual void a() = 0;
};

class Example1: public ExampleIface
{
  public:
    virtual ~Example1() {}
    virtual void a()
    {
      // something
    }
};

class ExampleFactory
{
  public :
    typedef ExampleIface * ExamplePtrType; // can be shared_ptr instead

    static ExamplePtrType Create( /*params?*/)
    {
      ExamplePtrType p( new Example1 );
      return p;
    }

  private:
    ExampleFactory();
    ~ExampleFactory();
};

和单元测试:

void test_Create()
{
  ExampleFactory::ExamplePtrType p = ExampleFactory::Create();
  Example1 *realType = dynamic_cast< Example1* >( p );
  TS_ASSERT( NULL != realType ); // if you use cxxtest
}

关于c++ - 我如何对工厂进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931425/

相关文章:

android - 使用 Mockito 进行 Retrofit 2 api 调用的单元测试

java - 从 IntelliJ 中的 groovy 测试文件创建 Java 类

sql-server - tSQLt:在 SetUp 和测试之间共享数据

c++ - Cython:共享对象中 undefined symbol

c++ - 如何保证对象的生命周期与成员函数的持续时间相匹配?

c++ - JUCE - 成员函数不可行 : 'this' Argument Has Type const

unit-testing - 如何使用 React findDomNode 函数访问内联样式?

c++ - 使用 GTest 访问违规读取位置,无需任何复杂测试

ruby-on-rails - shoulda-matchers 的 ActiveRecord 匹配器是否违反了 "test behavior not implementation"规则?

c++ - 当它是模板参数时默认成员变量指针