Testing 如何建立一个FitNesse套件层次结构,允许多个;SuiteSetUp";?

Testing 如何建立一个FitNesse套件层次结构,允许多个;SuiteSetUp";?,testing,fitnesse,Testing,Fitnesse,我目前的套件结构如下: 外套 套房设置 内裤1 套房设置 测试1 测试2 测试3 套房酒店 内衣裤2 套房设置 测试1 测试2 测试3 套房酒店 我想让OuterSuite.SuiteSetUp加载一个包含一些基本测试数据的数据库。然后,InnerSuite1.SuiteSet和InnerSuite2.SuiteSet中的每一个都会稍微修改各自测试组的测试数据。(并将其恢复到相应SuiteToardown中的起始值。) 但正如我发现的,“可能只有一个!”SuiteSetUp。您将

我目前的套件结构如下:

  • 外套
    • 套房设置
    • 内裤1
      • 套房设置
      • 测试1
      • 测试2
      • 测试3
      • 套房酒店
    • 内衣裤2
      • 套房设置
      • 测试1
      • 测试2
      • 测试3
      • 套房酒店
我想让OuterSuite.SuiteSetUp加载一个包含一些基本测试数据的数据库。然后,InnerSuite1.SuiteSet和InnerSuite2.SuiteSet中的每一个都会稍微修改各自测试组的测试数据。(并将其恢复到相应SuiteToardown中的起始值。)


但正如我发现的,“可能只有一个!”SuiteSetUp。您将如何获得所需的行为?

我们通过利用Hudson为特定目的运行特定套件解决了类似的问题

它的工作原理有点像这样:

  • 我们有一个引导页面,用来准备数据库。这是一个单独的哈德逊作业。此作业准备数据库,然后对其进行备份
  • 然后,当我们运行套件时,我们在每个套件之前对数据库进行恢复
  • 数据库恢复后,运行一个套件。我们单独运行主套件以强制数据库清理,因为我们现在无法支持DB回滚

  • 这种方法并不完美,但它可以让我们更好地管理数据库。

    使用这种技巧,您可以获得这种结构

    InnerSuite#.SuiteSetUp的内容

     !include -c <OuterSuite.SuiteSetUp
     # Your original code of the suite setup
    

    !include-c嗨,首先对不起,我直到现在才注意到这个答案。如果我直接运行OuterSuite,那么OuterSuite.SuiteSetUp是否会运行两次?@EmilBadh:解决问题的最简单方法是将OuterSuite.SuiteSetUp页面重命名为其他页面,并确保其“页面类型”属性设置为“静态页面”。然后向InnerSuite1和InnerSuite2的SuiteSetUp页面添加一个include指令,指向新重命名的页面。如果通用设置页面不是SuiteSetUp,则FitNesse不会将其作为套件的一部分自动运行;它将仅作为InnerSuite1和2的SuiteSetUp页面的一部分运行,因为它包含在这些页面中。
    
     # Your original code of the suite teardown
     !include -c <OuterSuite.SuiteTearDown