» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

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

На нашем литературном портале можно бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю, Троелсен Эндрю . Жанр: Базы данных. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале litmir.org.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Название: Язык программирования C#9 и платформа .NET5
Дата добавления: 22 август 2024
Количество просмотров: 175
Читать онлайн

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту readbookfedya@gmail.com для удаления материала

Язык программирования C#9 и платформа .NET5 читать книгу онлайн

Язык программирования C#9 и платформа .NET5 - читать бесплатно онлайн , автор Троелсен Эндрю

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле.

Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных.

Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

Перейти на страницу:

protected void ExecuteInATransaction(Action actionToExecute)

{

  var strategy = Context.Database.CreateExecutionStrategy();

  strategy.Execute(() =>

  {

    using var trans = Context.Database.BeginTransaction();

    actionToExecute();

    trans.Rollback();

  });

}

protected void ExecuteInASharedTransaction(Action<IDbContextTransaction>

actionToExecute)

{

  var strategy = Context.Database.CreateExecutionStrategy();

  strategy.Execute(() =>

   {

    using IDbContextTransaction trans =

      Context.Database.BeginTransaction(IsolationLevel.ReadUncommitted);

    actionToExecute(trans);

    trans.Rollback();

  });

}

Добавление класса тестовой оснастки EnsureAutoLotDatabase

Инфраструктура тестирования xUnit предоставляет механизм, который позволяет запускать код до прогона любого теста (называется настройкой оснастки) и после прогона всех тестов (называется освобождением оснастки). Обычно поступать так не рекомендуется, но в рассматриваемом случае желательно удостовериться, что база данных создана и загружена данными до прогона любого теста, а не до прогона каждого теста. Классы тестов, которые реализуют IClassFixture<T> where Т: TestFixtureClass, должны будут выполнять код конструктора типа Т (т.е. TestFixtureClass) до прогона любого теста и код метода Dispose() после завершения всех тестов.

Создайте в каталоге Base новый файл класса по имени EnsureAutoLotDatabaseTestFixture.cs и реализуйте интерфейс IDisposable. Сделайте класс открытым и запечатанным, а также добавьте показанные далее операторы using:

using System;

using AutoLot.Dal.Initialization;

namespace AutoLot.Dal.Tests.Base

{

  public sealed class EnsureAutoLotDatabaseTestFixture : IDisposable

  {

  }

}

В конструкторе понадобится создать экземпляр реализации IConfiguration и с его помощью создать экземпляр ApplicationDbContext. Затем нужно вызвать метод ClearAndReseedDatabase() класса SampleDatalnitializer и в заключение освободить экземпляр контекста. В приводимых здесь примерах метод Dispose() не обязан выполнять какую-то работу (но должен присутствовать для соответствия шаблону с интерфейсом IDisposable). Вот как выглядит конструктор и метод Dispose():

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

public EnsureAutoLotDatabaseTestFixture()

{

  var configuration =  TestHelpers.GetConfiguration();

  var context = TestHelpers.GetContext(configuration);

  SampleDataInitializer.ClearAndReseedDatabase(context);

  context.Dispose();

}

public void Dispose()

{

}

Добавление классов интеграционных тестов

Теперь необходимо создать классы, которые будут поддерживать автоматизированные тесты. Такие классы называют тестовыми оснастками. Добавьте в проект AutoLot.Dal. Tests новый каталог по имени IntegrationTests и поместите в него четыре файла с именами CarTests.cs, CustomerTests.cs, MakeTests.cs и OrderTests.cs.

В зависимости от возможностей средства запуска тестов тесты xUnit выполняются последовательно внутри тестовой оснастки (класса), но параллельно во всех тестовых оснастках (классах). Это может оказаться проблематичным при прогоне интеграционных тестов, взаимодействующих с единственной базой данных. Выполнение можно сделать последовательным для всех тестовых оснасток, добавив их в одну и ту же тестовую коллекцию. Тестовые коллекции определяются по имени с применением атрибута [Collection] к классу. Поместите перед всеми четырьмя классами следующий атрибут [Collection]:

[Collection("Integration Tests")]

Унаследуйте все четыре класса от BaseTest, реализуйте интерфейс IClassFixture и приведите операторы using к показанному далее виду:

// CarTests.cs

using System.Collections.Generic;

using System.Linq;

using AutoLot.Dal.Exceptions;

using AutoLot.Dal.Repos;

using AutoLot.Dal.Tests.Base;

using AutoLot.Models.Entities;

using Microsoft.EntityFrameworkCore;

using Microsoft.EntityFrameworkCore.ChangeTracking;

using Microsoft.EntityFrameworkCore.Query;

using Microsoft.EntityFrameworkCore.Storage;

using Xunit;

Перейти на страницу:
Комментариев (0)