тестирование от обычного тестового прибора; противоречивые результаты - PullRequest
0 голосов
/ 22 марта 2011

У меня есть два тестовых прибора с общим родителем.Несмотря на то, что тесты включают в себя вещи типа SQLite / NHib, которые поначалу обычно бывают немного похожими, в NUnit есть кое-что, чего я не понимаю, и надеюсь, что это поможет исправить эти тесты.

Хорошая новость заключается в том, что если я запустил (через TestDriven.Net) оба вложенных в TestFixtures без выбора общего родителя, все тесты пройдут успешно.Но если я включаю общего родителя в прогон, я получаю сбои (предположительно, потому что мой сеанс NHib был удален или потерял его привязку).

Может кто-нибудь объяснить, почему два теста выполняются самостоятельно, а не с родителем, и есть ли способ обеспечить успешное поведение?

Ура,
Беррил

public class ActivityTestFixture : GreenQueryOnlySQLiteTestFixture 
{ 
    protected IProjectDao _projectDao; 
    protected IDao<Account> _accountDao; 
    protected override void OnFixtureSetUp() 
    { 
        base.OnFixtureSetUp(); 
        _projectDao = DataFactory.GetProjectDao(_sessionFactoryContext.SessionFactory); 
        _accountDao = DataFactory.GetAccountDao(_sessionFactoryContext.SessionFactory); 
    } 
} 

[TestFixture] 
public class AccountDaoTests : ActivityTestFixture 
{ 
    [Test] 
    public void FindAll_IsEquivalentToSeeds() { 
        IList<Account> found; 
        using (var tx = _session.BeginTransaction()) { 
            found = _accountDao.FindAll(); 
            tx.Commit(); 
        } 
        found.AssertUnsavedValueSequenceEqual(ActivitySubjectSeeds.AllAccounts.ToAr ray()); 
    } 
} 

[TestFixture] 
public class ProjectDaoTests : ActivityTestFixture 
{ 
    [Test] 
    public void FindAll_IsEquivalentToSeeds() 
    { 
        IList<Project> found; 
        using (var tx = _session.BeginTransaction()) 
        { 
            found = _projectDao.FindAll(); 
            tx.Commit(); 
        } 
        found.AssertUnsavedValueSequenceEqual(ActivitySubjectSeeds.Projects.ToArray ()); 
    } 
} 

1 Ответ

0 голосов
/ 22 марта 2011

Не уверен, что ошибка, которую вы получаете, но, вероятно, потому что у вас есть какие-то статические поля в классе GreenQueryOnlySQLiteTestFixture. Принцип работы NUnit заключается в том, что устройство живет в течение всего времени жизни тестов внутри него. Таким образом, он создается только один раз для всех тестов. Это отличается от xUnit, который живет в течение жизни одного теста.

Не видя всей реализации, трудно понять, что не так. Тем не менее, вы можете удалить TestFixtureAttribute из вашего родительского прибора, так как он, по-видимому, не имеет никаких тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...