Re: Странное поведение NUnit
От: ComposteR Россия  
Дата: 09.03.05 10:52
Оценка:
Здравствуйте, 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>>
-=[ComposteR]=-
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.