SetUpFixture выполняется несколько раз
У меня есть следующий код:
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;
}
}
}
В основном ():
string[] my_args = { "/fixture=" + typeof(Tests), Assembly.GetExecutingAssembly().Location };
int returnCode = NUnit.ConsoleRunner.Runner.Main(my_args);
Когда я запускаю это, MySetUpClass выполняется до и после каждого теста. Как я могу заставить этот класс работать только один раз до и после всех TestFixtures?
2 ответа
Вы должны изменить тег [SetUp]
в [TestFixtureSetUp]
а также [TearDown]
в [TestFixtureTearDown]
,
Это не помогло. Я хотел получить следующий вывод: #run RunBeforeAnyTests() # запустить все тесты в классе TestFixture-LoginTest. # запустить все тесты в классе TestFixture-AddTest. #run RunAfterAnyTests() Я добился этого, поместив [TestFixtureSetUp] и [TestFixtureTearDown] в классы-тесты. открытый класс Tests { [TestFixtureSetUp] public void Setup(); [TestFixtureTearDown] public void Teardown(); [Suite] общедоступный статический IEnumerable Suite; }
Также вынул базовый класс -MySetUpClass.