34

我想为 selenium ui 自动化构建一个 nunit 项目。我想在运行所有测试(所有测试)之前登录该站点,并在运行所有测试(所有测试)后关闭浏览器。

我不能使用 SetUp,因为它与固定装置有关,我想在所有事情之前和之后都这样做。

你知道谁来执行它吗?


我熟悉 SetUp 和 TearDown 属性。让我再解释一下。

我需要在所有夹具的所有测试开始之前执行一些逻辑(AKA - 整个程序集中的第一个测试),还需要在所有夹具的所有测试结束后执行一些逻辑(AKA - 整个程序集中的最后一个测试)。

4

4 回答 4

55

如果您所有的测试装置都在同一个命名空间中,那么您可以使用该[SetUpFixture]属性将一个类标记为全局设置和拆卸。然后,您可以将所有登录/注销功能放在那里。

NUNIT 2.x

namespace MyNamespace.Tests
{
    using System;
    using NUnit.Framework;

    [SetUpFixture]
    public class TestsSetupClass
    {
        [SetUp]
        public void GlobalSetup()
        {
            // Do login here.
        }

        [TearDown]
        public void GlobalTeardown()
        {
            // Do logout here
        }
    }
}

见: http ://www.nunit.org/index.php?p=setupFixture&r=2.4

NUNIT 3.x

namespace MyNamespace.Tests
{
    using System;
    using NUnit.Framework;

    [SetUpFixture]
    public class TestsSetupClass
    {
        [OneTimeSetUp]
        public void GlobalSetup()
        {
            // Do login here.
        }

        [OneTimeTearDown]
        public void GlobalTeardown()
        {
            // Do logout here
        }
    }
}

请参阅: https ://github.com/nunit/docs/wiki/SetUpFixture-Attribute

于 2013-08-28T10:46:22.687 回答
11

当然。这就是[TestSetUp]and[TearDown]属性的用途。不要将它们与[TestFixtureSetUp]and混淆[TestFixtureTearDown],它们在第一次测试之前和最后一次测试之后执行。

于 2013-08-28T10:45:01.437 回答
3

在执行每个测试用例[SetUp]部分之前将执行

完成后每个测试用例[TearDown]部分的执行将被执行。

如果我们想初始化变量,我们通常会[SetUp]像构造函数一样在部分中编写

如果我们想处理我们经常在[TearDown]section中写的任何对象

    [SetUp]
    protected void SetUp()
    {
             //initialize objects
    }

    [TearDown]
    public void TearDown()
    {
       //dispose objects
    }
于 2013-08-28T11:26:48.657 回答
2

最接近的nunitSetupFixture属性,它允许您标记一个类以对命名空间中的所有测试夹具进行设置/拆卸;

SetUpFixture 中的 SetUp 方法在其命名空间中包含的任何固定装置之前执行一次。TearDown 方法在所有夹具执行完毕后执行一次。

于 2013-08-28T10:45:08.203 回答