Nunit SetUpFixture正在执行多次
我有以下代码: File1.cs包含: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()
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