可以编写[Test,OneTimeSetup]吗?

时间:2019-04-12 19:08:01

标签: c# nunit

我在一个测试用例上方写了[Test,OneTimeSetup]是运行我再次定义的OneTimeSetup方法吗?

我们的设置过程繁重,需要为Nunit使用[OneTimeSetup]。存在一个问题,即某些数据将在测试治具中而不是作为个人测试运行时会被更改并导致测试用例失败。因此,在测试之上,我编写了[Test,OneTimeSetup],并解决了该问题。

[OneTimeSetUp]
  public void Initialize()
  {
      //Setup Code        
  }

[Test]
public void TestName1()
{
   ...
}

[Test, OneTimeSetUp]
  public void TestName2()
  {
     //Test Code
  }

1 个答案:

答案 0 :(得分:1)

我认为您的“修复”以某种方式改变了行为,即看不到任何故障,但是您实际上并未修复使测试混乱的依赖项。

这就是您使用的属性所发生的情况。

  1. 由于您欺骗NUnit认为TestName2是一次性设置方法,因此它首先运行,而不进行任何其他测试。

  2. 然后TestName1运行,作为找到的第一个测试。尽管不能保证顺序,但根据您的报告,可能是正在使用的顺序。

  3. 然后TestName2再次运行,这次作为测试,因为它也被标记为测试。

但是,您所做的确实应该是NUnit中的错误。方法可以是Test方法,SetUp方法,TearDown方法等。它不应该是其中的一种。如果下一个NUnit版本检测到您在做什么并给出错误,那就不足为奇了。

更好的解决方案是分析测试以找到排序依赖项并将其删除。