为重复测试创建可重用的基础架构 - 我缺少什么OOP概念?

时间:2016-01-20 09:01:53

标签: c# oop

我正在构建一些基础设施来测试一组使用各种金融工具的定价引擎。我的问题是我基本上有3层基础设施,并且不知道以OOP方式组织这个基础设施的最合适方式是什么。

解释我目前的设计:

  • 一个单独的TestClass PricingEngineTests

    • 方法createStuff()

      • 初始化一些测试工具对象ABC,...,Z
      • 这些测试对象作为参数以各种独特的组合形式传递,以初始化测试金融工具对象12,...,50
    • 为每个相应的定价引擎分别测试TestMethods,其中:

      • 致电createStuff()
      • 使用测试工具对象AZ的一些独特组合,并测试金融工具150以初始化该特定定价引擎的对象
      • 随后使用创建的定价引擎对象对相应的定价引擎方法执行测试

现在我的问题是每个测试方法必须调用createStuff(),这需要一些时间来构建所有AZ和{{1} }} 1只能使用它每次创建的基础设施的一个小得多的独特子集。这显然是我设计中的一个缺陷。

这种设计结构背后的逻辑是,我可以独立地测试每个定价引擎,而不会在每个相应的测试方法的开头重复大量的基础架构创建代码,只需完全废弃50

我知道我的设计很差,但是我不知道如何以面向对象的方式修复它...我怎样才能更有效地构建这个基础设施,以便我可以独立测试每个定价引擎?

1 个答案:

答案 0 :(得分:1)

你不能只从createStuff()方法调用[TestFixtureSetup](它的名称将取决于你正在使用的单元测试框架),它只运行一次当前的测试运行,所以减少了从n(其中n是测试次数)到1的初始化量。

显然,这依赖于每个测试的设置都是相同的,但是从你的问题看来应该是这样。