我们经常有Fitnesse测试单独传递但在作为套件的一部分运行时失败(反之亦然)。
这是因为每次测试之间都存在一些设置。有没有办法告诉Fitnesse在运行每个测试之前使用新的线程/进程/任何内容,以便在两种情况下保证测试的行为方式相同。
目前我们使用Suite导致我们的持续集成服务器,这意味着单独失败的测试可以通过我们的版本。这让我们感到紧张!
在下面的示例中,AlarmDefintionSet是AlarmDefinition的父对象。 AlarmDefinitionSetSetUpFixture创建一个AlarmDefinitionSet并将其存储在内存中。 AlarmDefinitionFixture在内存中找到父(这可以是id,但在下面的示例中它使用默认值),将其设置为属性,然后设置Code,InitialWTGStopped和RunAlarm属性。然后它调用Valid和ValidationMessage方法作为测试。
此测试在作为套件的一部分运行时或单独运行时可以正常工作。但是,如果我要删除AlarmDefinitionSetSetUpFixture,它将在自己运行时失败,因为它无法找到合适的父级。但是,如果它作为套件的一部分运行,并且早期的测试包含了AlarmDefinitionSetSetUpFixture,那么它将通过。这是一个温和的简化,但它说明了相关的要点。我可以使用Fitnesse“[SuiteName] .SetUpFixture”文件来调用一个方法来清除内存中的所有内容,我们可能确实这样做了。将这样的文件添加到我们的所有套件中并确保它正确调用的方法从内存中删除所有内容将会有很多工作。
这个例子中的灯具都是fit.ColumnFixture的
谢谢...
答案 0 :(得分:0)
简短回答 - 没有FitNesse设置可以使每个测试独立。你需要自己照顾好自己。有时我会使用一个SetUp页面,它包含在每个测试页面的开头,用于执行一个夹具,确保每个测试都有一个干净的环境。