• Pirates: to be or not to be

      Навеяно судовым процессом над The Pirate Bay.

      Сейчас всё чаще от правообладателей звучат угрозы в сторону торрент трекеров в частности и пиратов в общем. Их позиция понятна: они теряют прибыль. Пользователям, с одной стороны — хорошо, надо тратить меньше денег, с другой — они получают менее качественный продукт, но на это многим наплевать многих это не беспокоит. А вот моё субъективное мнение.

      Начну с продуктов компании Microsoft, а именно — Microsoft Office. Из всего офисного пакета я активно пользуюсь Word, Excel, Outlook, иногда OneNote и PowerPoint. Но! Покажите мне редакцию MS Officе, где есть только эти продукты. Такой нет, а переплачивать за ненужные мне продукты — не хочется. Что мешает Microsoft дать возможность пользователям выбирать то, что им нужно, а не то, что им навязывают? Вот и получается, то есть желание, но нет возможности купить нужное ПО.
      Читать дальше →
    • Unit тесты и наследование

        При разработке unit тестов в Visual Studio часто хочется создать какой-то базовый клас для тестирования базовой лоники. Например у нас есть такой класс: [TestClass]
        public virtual class PersonTestBase
        {

        [TestMethod]
        public void GetNameTest()
        {
        //...
        }
        }
        и его класс наследник: [TestClass]
        public class CustomerTest: PersonTestBase
        {
        [TestMethod]
        public override void GetNameTest()
        {
        base.GetNameTest();
        }
        }

        Плюсы такого подхода:
        • полная поддержка визуальных средств Visual Studio (Test List Editor);
        • простота реализации.
        Минусы:
        • избыточность кода;
        • создание наследника является по сути copy&paste.
        Сразу необходимо заметить, что PersonTestBase и CustomerTest должны находится в одной сборке, иначе тесты в PersonTestBase работать не будут — это ограничение unit тестов. Подробнее смотрите в msdn. Кроме описанных в msdn способов можно поступить так: создаётся два проекта: BaseTests и CustomTests;в проект CustomTests добавляются необходимые файлы из BaseTests таким образом: Project -> Add Existing Item -> Выбираем необходимые файлы -> Add As Link.Таким образом физически файлы находятся в разных проектах, но при компиляции необходимые классы оказываются в одной сборке. Теперь пришло время изменить наш CustomerTest. [TestClass]
        public class CustomerTest: PersonTestBase
        {
        [TestMethod]
        public override void CustomerTestMethod()
        {
        //...
        }
        }

        Мы добавили новый, специфический для Customer, метод и удалили переопределения метода из базового класса, т.к. его функциональность нас полность устраивает. Что мы из этого получили:
        • фактически, в классе у реализоано 2 тестовы метода: один перешел из базового класса и один мы реализовали сами.
        • Visual Studio Test List Editor говорит что у нас только один тетовый медов — метода из бащового класс не отображается и, соответственно, не запускается.
        Обидно, но не смертельно. На помощь нам приходит штатная утилита MSTest, которая решает все, или почти все, наши проблемы.Плюсы такого метода:
        • мы избавились от минусов предыдущего метода;
        Минусы:
        • нету интеграции с Visual Studio.