SetUpFixture被执行多次

时间:2015-11-03 23:11:18

标签: nunit nunit-2.5

我有以下代码:

File1.cs包含:

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

        [TearDown]
        public void RunAfterAnyTests()
        {
            //...
        }
    }
}

File2.cs包含:

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

        [Test]
        public void LoginValid()
        {
            //...
        }
    }
}

File3.cs包含:

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

        [Test]
        public void Execute2()
        {
            //...
        }
    }
}

File4.cs包含:

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()中:

string[] my_args = { "/fixture=" + typeof(Tests), Assembly.GetExecutingAssembly().Location };
int returnCode = NUnit.ConsoleRunner.Runner.Main(my_args);

当我运行它时,MySetUpClass正在每次测试之前和之后执行。如何让所有TestFixtures前后运行一次?

2 个答案:

答案 0 :(得分:1)

您必须将代码[SetUp]更改为[TestFixtureSetUp],将[TearDown]更改为[TestFixtureTearDown]

答案 1 :(得分:0)

那没有用。我想要的是以下输出:#run RunBeforeAnyTests()#run所有测试在TestFixture类-LogitTest中。 #run all TestFixture class-AddTest中的测试。 #run RunAfterAnyTests()我通过在类测试中放入[TestFixtureSetUp]和[TestFixtureTearDown]来实现这一点。 public class Tests {[TestFixtureSetUp] public void Setup(); [TestFixtureTearDown] public void Teardown(); [套房]公共静态IEnumerable套房; }

还取出了基类-MySetUpClass。