根据条件忽略测试或TestFixture

28 nunit

我们的解决方案中有一些集成测试.要运行这些测试,必须在开发人员PC上安装仿真软件.但是,并非每台开发人员都安装此软件.如果未安装模拟软件,则应跳过这些测试,否则==> NullRefException.

我现在正在寻找一种方法来为test/testfixtures做一个"条件忽略".就像是

如果(simulationFilesExist)做testfixture,则跳过testfixture

NUnit提供了一些有用的东西,比如忽略和显式但不安静我需要的东西.

谢谢

tva*_*son 46

在测试或夹具设置方法中使用一些代码来检测是否安装了模拟软件,如果不是,则调用Assert.Ignore().

[SetUp]
public void TestSetUp() 
{
     if (!TestHelper.SimulationFilesExist())
     {
         Assert.Ignore( "Simulation files are not installed.  Omitting." );
     }
}
Run Code Online (Sandbox Code Playgroud)

要么

[TestFixtureSetUp]
public void FixtureSetUp()
{
     if (!TestHelper.SimulationFilesExist())
     {
         Assert.Ignore( "Simulation files are not installed.  Omitting fixture." );
     }
}
Run Code Online (Sandbox Code Playgroud)

  • 不会.Assert.Fail会导致测试失败.Assert.Ignore()完全按照你的意愿去做.它会导致在运行时忽略测试.从文档引用:"Assert.Ignore方法为您提供了在运行时动态导致测试或套件被忽略的能力." (4认同)
  • 根据您使用的NUnit框架的版本,还有Assert.Inconclusive.这也将导致成功的结果,但标记这些测试可能在其他条件下失败. (3认同)

Ric*_*ter 6

NUnit还为您提供了提供Category属性的选项.根据您启动测试的方式,可能适合标记需要具有已知类别的模拟器的所有测试(例如[Category("RequiresSimulationSoftware")]).然后从NUnit Gui您可以选择排除某些类别.您可以从NUnit命令行运行器执行相同的操作(指定/ exclude:RequiresSimulationSoftware,如果适用).

希望这(或tvanfosson之前的回答)有所帮助.