Здравствуйте, 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>>