我们的解决方案中有一些集成测试。要运行这些测试,必须在开发人员PC上安装仿真软件。但是,并非每台开发人员都安装此软件。如果未安装模拟软件,则应跳过这些测试,否则==> NullRefException。
我现在正在寻找一种方法来为test / testfixtures做一个“条件忽略”。就像是
如果(simulationFilesExist)做testfixture,则跳过testfixture
NUnit提供了一些有用的东西,比如忽略和显式但不安静我需要的东西。
谢谢
在测试或夹具设置方法中使用一些代码来检测是否安装了模拟软件,如果不是,则调用Assert.Ignore()。
[SetUp]
public void TestSetUp()
{
if (!TestHelper.SimulationFilesExist())
{
Assert.Ignore( "Simulation files are not installed. Omitting." );
}
}
要么
[TestFixtureSetUp]
public void FixtureSetUp()
{
if (!TestHelper.SimulationFilesExist())
{
Assert.Ignore( "Simulation files are not installed. Omitting fixture." );
}
}
在NUnit 3.0及更高版本中,您必须使用OneTimeSetUp
属性而不是TestFixtureSetUp
。
NUnit还为您提供了提供Category属性的选项。根据您启动测试的方式,可能适合标记需要具有已知类别的模拟器的所有测试(例如[Category(“RequiresSimulationSoftware”)])。然后从NUnit Gui您可以选择排除某些类别。您可以从NUnit命令行运行器执行相同的操作(指定/ exclude:RequiresSimulationSoftware,如果适用)。
希望这(或tvanfosson之前的回答)有所帮助。
[SetUp]
public void TestSetUp()
{
if (!TestHelper.SimulationFilesExist())
{
Assert.Ignore( "Simulation files are not installed. Omitting." );
}
}
你在TestFixtureSet Attribute
中使用这种类型的条件。但是如果这个夹具有参数化测试,那么如果你想忽略这个夹具的参数化测试,那么这将进入无限循环,你的测试将被挂起。因此,如果条件更好,请使用setup属性。