Страницы

четверг, 2 февраля 2012 г.

HNibernate. Enhima. SQLite in-memory в две строчки.

  В предыдущем сообщении я рассказывал про основы тестирования NHibernate с использованием  SQLite in-memory. А сейчас как и обещал, расскажу, как проводить тестирование в хорошем, не загромождающем код тестов инфраструктурными деталями стиле.

  Кто читал книжку Джейсона Дентлера (Jason Dentler) наверно заметил, насколько огромен и сложен код теста. В одном из прошлых проектов я реализовывал нечто подобное. Класс работал, и выполнял свои функции. Но мне казался неуклюжим.  Остались две важные претензии:

  • Базовый класс сам по себе большой и сложный (большее 300 строк кода).
  • Мешает пользоваться другими базовыми классами (нет желания копировать его из проекта в проект). Улыбка

  Поэтому для проекта Enhima решил создать новый компонент, в основу которого положил принципы легковесности, минимального влияния на код теста, никаких ужасных базовых классов-переростков, никаких конфигураций. Сделать схему перед тестом, и удалить после. Всё! Так родился SQLiteInMemorySchemaMaker. Он прост в использовании, его можно легко прикрутить к любому тесту. Например так:

[TestFixture]
public class DomainMapperFixture 
{
    private Configuration _config;
    private SQLiteInMemorySchemaMaker _schemaMaker;
    [TestFixtureSetUp]
    public void TestFxtureSetup()
    {
        _config =  new Configuration();
        _config
            .ConfigureSQLiteInMemory()
            .MapEntities(From.ThisApplication());
        _schemaMaker = new SQLiteInMemorySchemaMaker(_config);
    }
    [SetUp]
    public void Setup()
    {
        _schemaMaker.CreateSchema();
    }
    [TearDown]
    public void TearDown()
    {
        _schemaMaker.DropSchema();
    }
    [Test]
    public void Do_the_test()
    {
       //Skipped 
    }
}

  Как видно, код теста остался весьма скромен. И меня это очень радует. Улыбка  Если понравилось, можно начинать пользоваться проектом Enhima уже сейчас (доступен через nuget).

Комментариев нет:

Отправить комментарий