nUnit不首先执行OneTimeSetup,而是执行OneTimeTearDown

问题描述

我最近从MSTest切换到nUnit以运行我的硒测试。使用MSTest,我正在运行测试 作为程序集初始化。我读到我可以做类似的事情并将其删除添加了所有必要的元素以使用NUnit运行我的测试,但顺序为 我所阅读的内容无法按预期执行,或者我可能无法执行此操作。

Nunit的版本= 3.12.0

NUnit3TestAdapter = 3.17.0

下面是我的代码示例 与cs文件有我的测试用例 另一个具有我下面的安装程序的cs文件位于同一命名空间中。

我遇到的问题是,当我运行测试用例时,属性OneTimeTearDown首先被执行 而不是OneTimeSetup。

 public class UserInfo
{

    public string Name{ get; set; }
    public int Id{ get; set; }
}

用于初始化包含我的程序集的文件

      using System;
  using NUnit.Framework;
namespace Automation_Test
{

  [TestFixture]
  public class Custom_Tests
  {
    [Test]
    public void Add()
    { /* ... */ }
  }
}

解决方法

要将SetUpFixture用作程序集初始化程序,它必须在全局名称空间中,即,在您指定的任何名称空间之外。

设置代码后,fixture函数会在名称空间中而不是在程序集范围内初始化测试。如果您所有的测试都在同一个命名空间中,那可能没问题。如果根据此设置在多个名称空间中进行测试,那将是一个问题。

即使如此,您的设置未运行但拆解却可以运行似乎很奇怪。因此,请尝试将SetUpFixture移到全局名称空间中,并报告发生的情况。如果您提供更多信息,我会进行更新。

,

我遇到的问题是将播放设置放在OneTimeSetup方法中

 Playback.PlaybackSettings.DelayBetweenActions = 750;
 Playback.PlaybackSettings.ThinkTimeMultiplier = 2;

我没有提出疑问。这引起了沉默 我没有看到的异常会绕开

   [OneTimeSetUp]
    public static void LoginSystem()
    { /* ... */ }

直接进入OnetimeTeardown方法

我更新了程序,并卸载了项目并删除了引用 和与编码ui相关的元素,并正确添加了三个程序集 参考

  1. Microsoft.VisualStudio.TestTools.UITest.Playback
  2. Microsoft.VisualStudio.TestTools.UITest.WindowsStoreUtility
  3. Microsoft.VisualStudio.TestTools.UITesting

完成此操作后,我的程序应能正常工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...