Извиняюсь за корявость вопроса, я вообще не QA а просто понадобилось мне тут наваять маленький unit-test И столкнулась с таким явлением..
Имеем проект, состоящий из нескольких модульных тестов. Один из тестов имеет примерно такой код
....
MyClass obj;
[TestFixtureSetUp]
public void Init()
{
obj = new MyClass();
}
[TestFixtureTearDown]
public void Destroy()
{
}
[Test]
public void IsValid()
{
return obj.IsValid();
}
[Test]
public void Test1()
{
...........
}
...........
Вобщем, тест этот валится еще при создании объекта (в Init), по AccessDenied в силу определенных причин. Далее происходит следующее. Если я ранаю каждый тест в проекте отдельно, то все номрально, те кто должны были упасть упали, те кто не должны — не упали. Если же проранать все тесты которые в проекте сразу, то тесты, идущие вслед за этим, — падают без всякой уважительной причины по все тому же AccesDenied. Лечитcя заменой TestFixtureSetup на просто Setup, но это не совсем то что мне нужно, мне таки нужно TestFixtureSetup. У меня есть кое-какие предположения относительно того почему так происходит, но нету предположений как бороться?
Здравствуйте, Xenia, Вы писали:
X>Извиняюсь за корявость вопроса, я вообще не QA а просто понадобилось мне тут наваять маленький unit-test И столкнулась с таким явлением..
X>Имеем проект, состоящий из нескольких модульных тестов. Один из тестов имеет примерно такой код
X>
X>....
X>MyClass obj;
X>[TestFixtureSetUp]
X>public void Init()
X>{
X> obj = new MyClass();
X>}
X>[TestFixtureTearDown]
X>public void Destroy()
X>{
X>}
X>[Test]
X>public void IsValid()
X>{
X> return obj.IsValid();
X>}
X>[Test]
X>public void Test1()
X>{
X> ...........
X>}
X>...........
X>
X>Вобщем, тест этот валится еще при создании объекта (в Init), по AccessDenied в силу определенных причин. Далее происходит следующее. Если я ранаю каждый тест в проекте отдельно, то все номрально, те кто должны были упасть упали, те кто не должны — не упали. Если же проранать все тесты которые в проекте сразу, то тесты, идущие вслед за этим, — падают без всякой уважительной причины по все тому же AccesDenied. Лечитcя заменой TestFixtureSetup на просто Setup, но это не совсем то что мне нужно, мне таки нужно TestFixtureSetup. У меня есть кое-какие предположения относительно того почему так происходит, но нету предположений как бороться?
TestFixtureSetup — это метод, вызывающийся один раз для всей TestFixture. Просто Setup вызывается перед каждым Test Case.
Таким образом в вашем случае все тестовые методы пытаюстся работать с данными, подготовленными один раз и испорченными после первого падения.
Еще одно маленькое замечание. У вас метод IsValid() объявлен как void, но при этом возвращает занчение obj.IsValid();. Здесь явно что-то не то.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Здравствуйте, Xenia, Вы писали:
X>Здравствуйте, ComposteR, Вы писали:
CR>>TestFixtureSetup — это метод, вызывающийся один раз для всей TestFixture. Просто Setup вызывается перед каждым Test Case.
CR>>Таким образом в вашем случае все тестовые методы пытаюстся работать с данными, подготовленными один раз и испорченными после первого падения.
X>Это понятно. Проблема то в том, что в моем случае валятся другие TextFixtures методы которых вызываются после
CR>>Еще одно маленькое замечание. У вас метод IsValid() объявлен как void, но при этом возвращает занчение obj.IsValid();. Здесь явно что-то не то.
X>Да, я просто по памяти и на больнцю голову писала этот псевдо-код, там все нормально естественно...
Понятно. Извините, просто не понял по вашему первому посту. В вашем случае дистанционно без кода не разберешься. В моей практике такого не случалось. Очевидно, что ваш код делает что-то такое, что вызывает такое поведение NUnit.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>