0

我们经常有单独通过但作为套件的一部分运行时失败的 Fitnesse 测试(反之亦然)。

这是因为在每次测试之间保留了一些设置。有没有办法告诉 Fitnesse 在运行每个测试之前使用新的线程/进程/任何东西,以便保证测试在两种情况下都以相同的方式运行。

目前,我们在持续集成服务器中使用套件结果,这意味着单独失败的测试可以通过我们的发布。这让我们很紧张!

在下面的示例中,AlarmDefintionSet 是 AlarmDefinition 的父对象。AlarmDefinitionSetSetUpFixture 创建一个 AlarmDefinitionSet 并将其存储在内存中。AlarmDefinitionFixture 找到内存中的父级(这可以通过 id,但在下面的示例中使用默认值),将其设置为属性,然后设置 Code、InitialWTGStopped 和 RunAlarm 属性。然后它调用 Valid 和 ValidationMessage 方法作为测试。

当作为套件的一部分或单独运行时,此测试工作正常。但是,如果我要删除 AlarmDefinitionSetSetUpFixture,它会在单独运行时失败,因为它无法找到合适的父级。但是,如果它作为套件的一部分运行,并且较早的测试包含一个 AlarmDefinitionSetSetUpFixture,那么它将通过。这是一个温和的简化,但它说明了相关点。我可以使用 Fitnesse "[SuiteName].SetUpFixture" 文件来调用一个方法来清除内存中的所有内容,我们确实可以这样做。将这样的文件添加到我们所有的套件中将需要大量工作,并且还要确保它调用的方法正确地从内存中删除所有内容。

示例 Fitnesse 测试

本例中的fixture都是fit.ColumnFixture的

谢谢 ...

4

1 回答 1

0

简短的回答 - 不,没有 FitNesse 设置可以使每个测试独立。你需要自己处理。有时我会使用设置页面(包含在每个测试页面的开头)来执行一个固定装置,以确保我为每个测试提供一个干净的环境。

于 2013-03-17T04:41:23.617 回答