写[Test,OneTimeSetup]可以吗?

问题描述 投票:1回答:1

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

我们有一个繁重的设置过程,需要我们为Nunit使用[OneTimeSetup]。存在一个问题,即某些数据会在测试夹具中运行时更改并导致测试用例失败但不会作为单独测试。所以在测试之上我写了[Test,OneTimeSetup]并解决了这个问题。

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

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

[Test, OneTimeSetUp]
  public void TestName2()
  {
     //Test Code
  }
c# nunit
1个回答
1
投票

我认为你的“修复”改变了行为的方式,没有看到任何失败,但你实际上没有修复一个搞乱你的测试的依赖。

以下是您使用的属性所发生的情况。

  1. 因为你欺骗NUnit认为TestName2是一次性设置方法,所以在任何其他测试之前它首先运行。
  2. 然后TestName1运行,第一次测试发现。虽然订单无法保证,但这可能是根据您的报告使用的订单。
  3. 然后TestName2再次运行,这次作为测试,因为它也被标记为测试。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.