Tisa.FakeXrm.Core 2025.9.10.1120

dotnet add package Tisa.FakeXrm.Core --version 2025.9.10.1120
                    
NuGet\Install-Package Tisa.FakeXrm.Core -Version 2025.9.10.1120
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Tisa.FakeXrm.Core" Version="2025.9.10.1120" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tisa.FakeXrm.Core" Version="2025.9.10.1120" />
                    
Directory.Packages.props
<PackageReference Include="Tisa.FakeXrm.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Tisa.FakeXrm.Core --version 2025.9.10.1120
                    
#r "nuget: Tisa.FakeXrm.Core, 2025.9.10.1120"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Tisa.FakeXrm.Core@2025.9.10.1120
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Tisa.FakeXrm.Core&version=2025.9.10.1120
                    
Install as a Cake Addin
#tool nuget:?package=Tisa.FakeXrm.Core&version=2025.9.10.1120
                    
Install as a Cake Tool

Tisa.FakeXrm.Core

Общие классы и компоненты для тестирования плагинов Dynamics CRM с использованием платформы .NET Core и библиотеки FakeXrmEasy.

Описание

Tisa.FakeXrm.Core предоставляет набор инструментов для упрощения написания unit-тестов и интеграционных тестов для плагинов Microsoft Dynamics 365 (CRM). Пакет построен на основе библиотеки FakeXrmEasy и расширяет её функциональность дополнительными вспомогательными классами, исполнителями и расширениями.

Основные возможности

  • Базовые классы для тестирования: XrmAbstractTest, XrmUnitTest, XrmIntegrationTest
  • Исполнители запросов: Поддержка различных операций CRM (SetState, Assign, ExecuteMultiple, работа с временными зонами)
  • Расширения контекста: Удобные методы для работы с IXrmFakedContext и XrmFakedPluginExecutionContext
  • Сериализация контекста: Десериализация контекста выполнения плагина из XML
  • Работа с общими переменными: Управление общими параметрами контекста выполнения

Установка

dotnet add package Tisa.FakeXrm.Core

Требования

  • .NET 8.0, .NET 9.0 или .NET 10.0
  • FakeXrmEasy (включается автоматически как зависимость)

Быстрый старт

Unit-тестирование плагина

using Tisa.FakeXrm.Core.Primitives;
using Microsoft.Xrm.Sdk;
using FakeXrmEasy.Plugins;

public class MyPluginTest : XrmUnitTest
{
    [Fact]
    public void TestPluginExecution()
    {
        // Создание тестовых данных
        var account = new Entity("account")
        {
            Id = Guid.NewGuid(),
            ["name"] = "Test Account"
        };
        Context.Initialize(account);

        // Создание контекста выполнения плагина
        var pluginContext = CreateXrmFakedPluginExecutionContext(
            messageName: "Create",
            stepStage: ProcessingStepStage.Postoperation
        );
        pluginContext.InputParameters["Target"] = account;

        // Выполнение плагина
        ExecutePlugin<MyPlugin>(pluginContext);

        // Проверка результатов
        var updatedAccount = Context.GetEntityById("account", account.Id);
        Assert.NotNull(updatedAccount);
    }
}

Интеграционное тестирование

using Tisa.FakeXrm.Core.Primitives;

public class MyIntegrationTest : XrmIntegrationTest
{
    public MyIntegrationTest() : base("MSCRM")
    {
        // Конструктор автоматически подключается к CRM
        // используя строку подключения из appsettings.json
    }

    [Fact]
    public void TestWithRealCrm()
    {
        var account = new Entity("account")
        {
            ["name"] = "Integration Test Account"
        };
        var accountId = OrganizationService.Create(account);

        Assert.NotEqual(Guid.Empty, accountId);
    }
}

Работа с контекстом

// Инициализация контекста из XML
var xmlEntities = @"<ArrayOfEntity>...</ArrayOfEntity>";
Context.Init(xmlEntities);

// Добавление сущностей с проверкой уникальности
var entity = new Entity("contact") { Id = Guid.NewGuid() };
Context.AppendEntitiy(entity);

// Работа с общими переменными
Context.SetCommonVariable(pluginContext, "MyVariable", "MyValue");
var value = Context.GetCommonVariable(pluginContext, "MyVariable");

Десериализация контекста плагина

var pluginContextXml = @"<PluginExecutionContext>...</PluginExecutionContext>";
var pluginContext = DeserializePluginExecutionContext(pluginContextXml);
ExecutePlugin<MyPlugin>(pluginContext);

Основные компоненты

Primitives

  • XrmAbstractTest: Базовый абстрактный класс для тестов с общими методами создания и десериализации контекста
  • XrmUnitTest: Класс для unit-тестов с использованием FakeXrmEasy
  • XrmIntegrationTest: Класс для интеграционных тестов с реальным подключением к CRM

Executors

  • FakeSetStateExecutor: Исполнитель для запросов SetState
  • FakeAssignExecutor: Исполнитель для запросов Assign
  • FakeExecuteMultipleExecutor: Исполнитель для запросов ExecuteMultiple
  • FakeLocalTimeFromUtcTimeExecutor: Исполнитель для конвертации времени из UTC в локальное
  • FakeUtcTimeFromLocalTimeExecutor: Исполнитель для конвертации времени из локального в UTC

Extensions

  • XrmFakedContextHelper: Расширения для работы с контекстом FakeXrmEasy
  • XrmFakedPluginExecutionContextHelper: Расширения для работы с контекстом выполнения плагина
  • GuidExtension: Расширения для работы с Guid

Helpers

  • PluginExecutionContextExtensions: Методы расширения для преобразования контекста плагина
  • Serializer: Класс для сериализации и десериализации данных

Лицензия

Copyright © 2025 ТИСА. Все права защищены.

Контакты

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2025.9.10.1120 318 11/17/2025
2025.9.9.1115 229 11/14/2025
2025.9.9.1111 265 11/12/2025
2025.9.9.1105 150 10/31/2025
2025.9.9.1101 242 10/28/2025 2025.9.9.1101 is deprecated because it has critical bugs.