Nunit SetUpFixture正在执行多次

Nunit SetUpFixture正在执行多次,nunit,nunit-2.5,Nunit,Nunit 2.5,我有以下代码: File1.cs包含: namespace TestsNM { [SetUpFixture] public class MySetUpClass { [SetUp] public void RunBeforeAnyTests() { //.... } [TearDown] public void RunAfterAnyTests()

我有以下代码:

File1.cs包含:

namespace TestsNM
{
    [SetUpFixture]
    public class MySetUpClass
    {
        [SetUp]
        public void RunBeforeAnyTests()
        {
            //....
        }

        [TearDown]
        public void RunAfterAnyTests()
        {
            //...
        }
    }
}
namespace TestsNM
{
    [TestFixture]
    public class LoginTest : MySetUpClass
    {
        [Test]
        public void LoginInValid()
        {
            //...
        }

        [Test]
        public void LoginValid()
        {
            //...
        }
    }
}
namespace TestsNM
{
    [TestFixture]
    public class AddTest : MySetUpClass
    {
        [Test]
        public void Execute1()
        {
            //...
        }

        [Test]
        public void Execute2()
        {
            //...
        }
    }
}
namespace TestsNM
{
    public class Tests
    {
        [Suite]
        public static IEnumerable Suite
        {
            get
            {
                return GetSuite();
            }
        }

        static ArrayList GetSuite()
        {
            ArrayList suite = new ArrayList();

            suite.Add(new LoginTest());
            suite.Add(new AddTest());

            return suite;
        }
    }
}
File2.cs包含:

namespace TestsNM
{
    [SetUpFixture]
    public class MySetUpClass
    {
        [SetUp]
        public void RunBeforeAnyTests()
        {
            //....
        }

        [TearDown]
        public void RunAfterAnyTests()
        {
            //...
        }
    }
}
namespace TestsNM
{
    [TestFixture]
    public class LoginTest : MySetUpClass
    {
        [Test]
        public void LoginInValid()
        {
            //...
        }

        [Test]
        public void LoginValid()
        {
            //...
        }
    }
}
namespace TestsNM
{
    [TestFixture]
    public class AddTest : MySetUpClass
    {
        [Test]
        public void Execute1()
        {
            //...
        }

        [Test]
        public void Execute2()
        {
            //...
        }
    }
}
namespace TestsNM
{
    public class Tests
    {
        [Suite]
        public static IEnumerable Suite
        {
            get
            {
                return GetSuite();
            }
        }

        static ArrayList GetSuite()
        {
            ArrayList suite = new ArrayList();

            suite.Add(new LoginTest());
            suite.Add(new AddTest());

            return suite;
        }
    }
}
File3.cs包含:

namespace TestsNM
{
    [SetUpFixture]
    public class MySetUpClass
    {
        [SetUp]
        public void RunBeforeAnyTests()
        {
            //....
        }

        [TearDown]
        public void RunAfterAnyTests()
        {
            //...
        }
    }
}
namespace TestsNM
{
    [TestFixture]
    public class LoginTest : MySetUpClass
    {
        [Test]
        public void LoginInValid()
        {
            //...
        }

        [Test]
        public void LoginValid()
        {
            //...
        }
    }
}
namespace TestsNM
{
    [TestFixture]
    public class AddTest : MySetUpClass
    {
        [Test]
        public void Execute1()
        {
            //...
        }

        [Test]
        public void Execute2()
        {
            //...
        }
    }
}
namespace TestsNM
{
    public class Tests
    {
        [Suite]
        public static IEnumerable Suite
        {
            get
            {
                return GetSuite();
            }
        }

        static ArrayList GetSuite()
        {
            ArrayList suite = new ArrayList();

            suite.Add(new LoginTest());
            suite.Add(new AddTest());

            return suite;
        }
    }
}
File4.cs包含:

namespace TestsNM
{
    [SetUpFixture]
    public class MySetUpClass
    {
        [SetUp]
        public void RunBeforeAnyTests()
        {
            //....
        }

        [TearDown]
        public void RunAfterAnyTests()
        {
            //...
        }
    }
}
namespace TestsNM
{
    [TestFixture]
    public class LoginTest : MySetUpClass
    {
        [Test]
        public void LoginInValid()
        {
            //...
        }

        [Test]
        public void LoginValid()
        {
            //...
        }
    }
}
namespace TestsNM
{
    [TestFixture]
    public class AddTest : MySetUpClass
    {
        [Test]
        public void Execute1()
        {
            //...
        }

        [Test]
        public void Execute2()
        {
            //...
        }
    }
}
namespace TestsNM
{
    public class Tests
    {
        [Suite]
        public static IEnumerable Suite
        {
            get
            {
                return GetSuite();
            }
        }

        static ArrayList GetSuite()
        {
            ArrayList suite = new ArrayList();

            suite.Add(new LoginTest());
            suite.Add(new AddTest());

            return suite;
        }
    }
}
在Main()中:


当我运行它时,MySetUpClass在每次测试前后都被执行。如何使该类仅在所有测试装置之前和之后运行一次?

您必须将标记
[SetUp]
更改为
[TestFixtureSetUp]
,并将
[TearDown]
更改为
[TestFixtureTearDown]

,这没有帮助。我想要的是以下输出:#运行RunBeforeAnyTests()#运行TestFixture类LoginTest中的所有测试#运行TestFixture类AddTest中的所有测试#run RunAfterAnyTests()我通过在类测试中放置[TestFixtureSetUp]和[TestFixtureTearDown]来实现这一点。公共类测试{[TestFixtureSetUp]public void Setup();[TestFixtureTearDown]public void Teardown();[Suite]public static IEnumerable Suite;}

还去掉了基类MySetUpClass