Русский
Русский
English
Статистика
Реклама

Как я на собеседование готовился 1

Иногда так случается, что хочется сменить работу. В таком случае, у нас есть несколько вариантов:

  1. 1) Потребовать прибавки, чтобы получить дополнительную мотивацию работать
  2. 2) Потребовать отпуск, чтобы отдохнуть от надоевших задач и набраться сил.
  3. 3) Сменить работу, выложив резюме, в надежде, что Вы получите предложение, которое будет Вас удовлетворять.


Если Вы все таки выбрали 3й вариант, то Вы поступили, как я. И я получил предложение мечты: родной стек(последнее время, я был вынужден сменить любимый C#, на php, так ещё и bitrix framework), финтех и с прибавкой к зарплате. Конечно же, первый делом, я решил подновить знания. Этот текст это в первую очередь, моя шпаргалка, составленная с текста вакансии на должность Middle .NET Engineer моей мечты.


ORM Entity Framework / NHibernate


Entity framework и NHibernate это фреймворки, которые используют технологию ORM(объектно-ориентировочного отображения(маппинга)для сопоставления объектов(классов) с таблицами в БД. То есть ORM, условно, прослойка между кодом и базой данных, которая позволяет созданые в программе объекты складывать/получать в/из бд.

Плюсы EF


  • Позволяет создать таблицу кодом или же используя EF Designer и сгенерировать новую базу данных
  • Вы можете автоматизировать создание объектов, а так же отслеживать изменения этих объектов, чем упростить процес обновления базы данных
  • Использование единого синтаксиса(LINQ) для любых коллекций объектов, будь то данные из БД, или просто список; он достаточно быстр, при правильном использовании, а так же в меру лаконичен.
  • EF может заменить огромные куски кода, которые Вы бы писали самостоятельно.
  • Сокращает время разработки.
  • Поддерживает асинхронные операции с базами данных.

Минусы EF


  • Использование нетрадиционного подхода обработки данных, доступного не с каждой базой данных.
  • При любом изменении в схеме БД, EF откажется работать; потребуются изменения в коде.
  • SQL-код генерируются в некотролируемом виде, мы должны доверять разработчикам самого EF.
  • Слабо подходит для больших доменных моделей.


Плюсы NHibernate


  • Большие возможности маппинга.
  • Поддержка кэша второго уровня.
  • Отличная реализация Unit Of Work.
  • Вы можете использовать почти любую базу данных.
  • Очень популярный в корпоративной среде.
  • Поддерживает различные стратегии генерации идентификаторов из базы данных.

Минусы NHibernate


  • Большое время подготовки метаданных.
  • Написание сопоставления, может быть очень утомительным, ведь XML не самый дружелюбный язык.
  • Сложен в освоении, так как сложен сам процес поиска документации.


Writing unit tests frameworks


Юнит-тесты позволяют быстро и автоматически протестировать отдельные компоненты приложения независимо от остальной его части. Не всегда юнит-тесты могут покрыть весь код приложения, но тем не менее они позволяют существенно уменьшить количество ошибок уже на этапе разработки.

Популярные фрейморки:
  • xUnit.net
  • MS Test
  • NUnit

Начиная с Visual Studio 2019 специально для тестов были добавлены три типа проектов: xUnit Test Project(.NET Core), MSTest Test Project(.NET Core) и NUnit Test Project(.NET Core)

Я буду рассматривать xUnit
Тесты в xUnit определяются в виде методов, к которым применяются атрибуты Fact, Theory.
Fact- это отдельный тест, у которого нет параметров. Theory тест, принимающий параметры, может иметь несколько сценариев.
Пример
[Fact]    public void Should_do_somthing(){...}    [Theory]    [InlineData(20, 180, 80, good)]    [InlineData(20, 180, 50, bad)]    public void Should_measure_weight(int age, int height, decimal weight, string expected){...}



Существует целая парадиграма тестирования, которую xUnit реализует в полной мере: Arrange-Act-Assert.
  • Arrange: устанавливает начальные условия для выполнения теста
  • Act: выполняет тест (обычно представляет одну строку кода)
  • Assert: верифицирует результат теста


Arrange и Act это обычный код на C#, а Assert это отдельный класс с набором статических методов для проверки результатов.

Основные методы
  • All(collection, action): метод подтверждает, что все элементы коллекции collection соответствуют действию action
  • Contains(expectedSubString, actualString): метод подтверждает, что строка actualString содержит expectedSubString
  • DoesNotContain(expectedSubString, actualString): метод подтверждает, что строка actualString не содержит строку expectedSubString
  • DoesNotMatch(expectedRegexPattern, actualString): метод подтверждает, что строка actualString не соответствует регулярному выражению expectedRegexPattern
  • Matches(expectedRegexPattern, actualString): метод подтверждает, что строка actualString соответствует регулярному выражению expectedRegexPattern
  • Equal(expected, result): метод сравнивает результат теста в виде значения result и ожидаемое значение expected и подтверждает их равенство
  • NotEqual(expected, result): метод сравнивает результат теста в виде значения result и ожидаемое значение expected и подтверждает их неравенство
  • Empty(collection): метод подтверждает, что коллекция collection пустая
  • NotEmpty(collection): метод подтверждает, что коллекция collection не пустая
  • True(result): метод подтверждает, что результат теста равен true
  • False(result): метод подтверждает, что результат теста равен false
  • IsType(expected, result): метод подтверждает, что результат теста имеет тип expected
  • IsNotType(expected, result): метод подтверждает, что результат теста не представляет тип expected
  • IsNull(result): метод подтверждает, что результат теста имеет значение null
  • IsNotNull(result): метод подтверждает, что результат теста не равен null
  • InRange(result, low, high): метод подтверждает, что результат теста находится в диапазоне между low и high
  • NotInRange(result, low, high): метод подтверждает, что результат теста не принадлежит диапазону от low до high
  • Same(expected, actual): метод подтверждает, что ссылки expected и actual указывают на один и тот же объект в памяти
  • NotSame(expected, actual): метод подтверждает, что ссылки expected и actual указывают на разные объекты в памяти
  • Throws(exception, expression): метод подтверждает, что выражение expression генерирует исключение exception



Таким образом, мы прошли 2 из 7 пунктов резюме.
В следующей части:
DI frameworks
Application designs understanding (n-Tier, Onion).

Спасибо, что дочитали, таким образом, я понимаю, что не один я готовлюсь к чему-либо ;)

Материалы: раз, два, три
Источник: habr.com
К списку статей
Опубликовано: 14.12.2020 06:13:47
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Net

Unit-testing

Orm

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru