Читаем Язык программирования C#9 и платформа .NET5 полностью

Тестовые методы без параметров называются фактами (и задействуют атрибут [Fact]). Тестовые методы, которые принимают параметры, называются теориями (они используют атрибут [Theory]) и могут выполнять множество итераций с разными значениями, передаваемыми в качестве параметров. Чтобы взглянуть на такие виды тестов, создайте в проекте AutoLot.Dal.Tests новый файл класса по имени SampleTests.cs. Вот как выглядит оператор using:

using Xunit;

namespace AutoLot.Dal.Tests

{

  public class SampleTests

  {

  }

}

Начните с создания теста [Fact]. В тесте [Fact] все значения содержатся внутри тестового метода. Следующий простой пример проверяет, что 3 + 2 = 5:

[Fact]

public void SimpleFactTest()

{

  Assert.Equal(5,3+2);

}

Что касается теста [Theory], то значения передаются тестовому методу и могут поступать из атрибута [InlineData], методов или классов. Здесь будет использоваться только атрибут [InlineData]. Создайте показанный ниже тест, которому предоставляются разные слагаемые и ожидаемый результат:

[Theory]

[InlineData(3,2,5)]

[InlineData(1,-1,0)]

public void SimpleTheoryTest(int addend1, int addend2, int expectedResult)

{

  Assert.Equal(expectedResult,addend1+addend2);

}

На заметку! За дополнительными сведениями об инфраструктуре тестирования xUnit обращайтесь в документацию по ссылке https://xunit.net/.

<p id="AutBody_Root1021"><strong>Выполнение тестов</strong></p>

Хотя тесты xUnit можно запускать из командной строки (с применением dotnet test), разработчикам лучше использовать для этого Visual Studio. Выберите в меню Test (Тестирование) пункт Test Explorer (Проводник тестов), чтобы получить возможность прогонять и отлаживать все или выбранные тесты.

<p id="AutBody_Root1022"><strong>Запрашивание базы данных</strong></p>

Вспомните, что создание экземпляров сущностей из базы данных обычно предусматривает выполнение оператора LINQ в отношении свойств DbSet. Поставщик баз данных и механизм трансляции LINQ преобразуют операторы LINQ в запросы SQL, с помощью которых из базы данных читаются соответствующие данные. Данные можно также загружать посредством метода FromSqlRaw() или FromSqlInterpolated() с применением низкоуровневых запросов SQL. Сущности, загружаемые в коллекции DbSet, по умолчанию добавляются в ChangeTracker, но отслеживание можно отключать. Данные, загружаемые в коллекции DbSet без ключей, никогда не отслеживаются.

Если связанные сущности уже загружены в DbSet, тогда EF Core будет связывать новые экземпляры по навигационным свойствам. Например, если сущности Car загружаются в коллекцию DbSet и затем связанные сущности Order загружаются в коллекцию DbSet того же самого экземпляра ApplicationDbContext, то навигационное свойство Car.Orders будет возвращать связанные сущности без повторного запрашивания базы данных.

Многие демонстрируемые здесь методы имеют асинхронные версии. Синтаксис запросов LINQ структурно одинаков, поэтому будут использоваться только синхронные версии.

<p id="AutBody_Root1023"><strong>Состояние сущности</strong></p>

Когда сущность создается за счет чтения данных из базы, значение EntityState устанавливается в Unchanged.

<p id="AutBody_Root1024"><strong>Запросы LINQ</strong></p>

Тип коллекции DbSet реализует (помимо прочих) интерфейс IQueryable, что позволяет применять команды LINQ языка C# для создания запросов, извлекающих информацию из базы данных. Наряду с тем, что все операторы LINQ языка C# доступны для использования с типом коллекции DbSet, некоторые операторы LINQ могут не поддерживаться поставщиком баз данных, а в EF Core появились дополнительные операторы LINQ. Неподдерживаемый оператор LINQ, который невозможно транслировать в язык запросов поставщика баз данных, приведет к генерации исключения времени выполнения, если только он не является последним в цепочке операторов LINQ. Когда неподдерживаемый оператор LINQ находится в самом конце цепочки LINQ, он выполнится на клиентской стороне (в коде С#).

На заметку! Настоящая книга не задумывалась как полный справочник по LINQ, так что в ней приводится не особо много примеров. С дополнительными примерами запросов LINQ можно ознакомиться по ссылке https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b.

<p id="AutBody_Root1025"><strong>Выполнение запросов LINQ</strong></p>
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных