Tisa.BpmTesting 2026.9.10.316

dotnet add package Tisa.BpmTesting --version 2026.9.10.316
                    
NuGet\Install-Package Tisa.BpmTesting -Version 2026.9.10.316
                    
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.BpmTesting" Version="2026.9.10.316" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tisa.BpmTesting" Version="2026.9.10.316" />
                    
Directory.Packages.props
<PackageReference Include="Tisa.BpmTesting" />
                    
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.BpmTesting --version 2026.9.10.316
                    
#r "nuget: Tisa.BpmTesting, 2026.9.10.316"
                    
#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.BpmTesting@2026.9.10.316
                    
#: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.BpmTesting&version=2026.9.10.316
                    
Install as a Cake Addin
#tool nuget:?package=Tisa.BpmTesting&version=2026.9.10.316
                    
Install as a Cake Tool

Tisa.BpmTesting

NuGet Version License

Тестовый фреймворк для модульного и интеграционного тестирования приложений на платформе BPMSoft от компании ТИСА.

Возможности

  • Моки для платформы BpmSoft: UserConnectionMock, EntitySchemaManagerMock, EntitySchemaQueryMock, EntitySchemaMock, моки для сущностей и запросов
  • Клиент BPM: абстракции и реализация HTTP-клиента для обращения к BpmSoft Core API (IBpmClient, BpmClient, BpmCoreService)
  • Интеграционные тесты: базовые классы и хелперы для тестирования с реальным BPM или тестовым окружением
  • Совместимость с xUnit, NSubstitute, AutoFixture
  • Целевые платформы: .NET 8.0, .NET 9.0, .NET 10.0

Установка

Подключите пакет к тестовому проекту:

dotnet add package Tisa.BpmTesting

Или в .csproj тестового проекта:

<PackageReference Include="Tisa.BpmTesting" Version="2026.9.10.0313" />

Зависимости

  • BPMSoftSDKдоступен на nuget.org; подключается автоматически при установке пакета.
  • Остальные зависимости (Flurl, NSubstitute, Polly, Serilog, xunit и др.) подключаются с nuget.org при установке пакета.

Требования для интеграционного тестирования

Для проекта интеграционного тестирования, использующего пакет Tisa.BpmTesting, необходимы:

Целевая платформа: при использовании класса UserConnection в проекте с данным пакетом указывайте целевую платформу .NET 8.0 — BPMSoft в настоящее время поддерживает только её.

1. Файл конфигурации ядра BPMSoft

Используйте файл Tisa.BpmTesting/Docs/App.config. Он должен быть добавлен в пакет Tisa.BpmTesting и подключён к тестовому проекту (например, как контент или копия в выходную директорию).

2. Ссылки на сборки платформы BPMSoft

Содержимое файла Tisa.BpmTesting/Docs/BpmSoft.xml должно быть скопировано в тестовый проект (например, в .csproj в виде блока <ItemGroup> с <Reference>). Эти сборки не входят в NuGet-пакет вследствие лицензионных ограничений; пути HintPath нужно задать в соответствии с вашей установкой BPMSoft.

Список сборок BPMSoft для ссылок в тестовом проекте

  • Autofac
  • Autofac.Extensions.DependencyInjection
  • BPMSoft.Authentication
  • BPMSoft.Core.DI
  • BPMSoft.Core.DI.Bindings
  • BPMSoft.DB.PostgreSql
  • BPMSoft.Licensing.Application
  • BPMSoft.Messaging.Common
  • BPMSoft.Monitoring
  • BPMSoft.Redis
  • BPMSoft.Redis.Abstractions
  • BPMSoft.Redis.StackExchangeAdapters
  • BPMSoft.Security
  • BPMSoft.Store.WebAdapters
  • BPMSoft.Web.Http.Abstractions
  • BPMSoft.Web.Http.AspNetCore
  • BPMSoft.Webhooks
  • Ninject
  • Ninject.Extensions.Factory
  • StackExchange.Redis

Скопируйте блок <ItemGroup> с <Reference> из файла BpmSoft.xml в папке Docs пакета и при необходимости скорректируйте HintPath под вашу установку BPMSoft.

Использование

Примеры тестов использования объектов платформы BPMSoft (UserConnection, Entity, PluginContext, ExecutorContext, EntityImage, IDataReader) с моками Tisa.BpmTesting и xUnit.

UserConnectionMock

Мок UserConnection. Неявно приводится к UserConnection.

var userConnection = new UserConnectionMock();

UserConnection uc = userConnection;

var executor = userConnection.EnsureDBConnection();
var schemaManager = userConnection.EntitySchemaManager;
var currentUser = userConnection.CurrentUser;

EntityMock

Мок Entity. Колонки задаются через константы метаданных.

var userConnection = new UserConnectionMock();
var entity = new EntityMock(userConnection, EntityMetadata.TisaArticle);

entity.PrimaryColumnValue = Guid.NewGuid();
entity.SetColumnValue(ArticleMetadata.Cost, 1000m);
entity.SetColumnValue(ArticleMetadata.Lot, 5);
entity.SetColumnValue(ArticleMetadata.StatusCodeIdField, ArticleStatusSet.Assessment);

var cost = entity.GetTypedColumnValue<decimal>(ArticleMetadata.Cost);

entity.SetOldValue(ArticleMetadata.Cost, 500m);
entity.SetEntityValue(ArticleMetadata.DemandIdField, demandId);

Entity e = entity;

EntityImage (образ сущности для PluginContext)

Создаётся с логическим именем и Id, атрибуты задаются константами метаданных.

var targetEntity = new EntityImage(EntityMetadata.TisaArticle, entityId);
targetEntity.SetAttributeValue(ArticleMetadata.Cost, 1000m);
targetEntity.SetAttributeValue(ArticleMetadata.Quantity, 2m);
targetEntity.SetAttributeValue(ArticleMetadata.StatusCodeIdField, ArticleStatusSet.Assessment);

var context = new PluginContext(
    entity,
    entityId: entity.PrimaryColumnValue,
    entityType: EntityMetadata.TisaArticle,
    entityEvent: EntityEvent.Saving,
    targetEntity: targetEntity);

DataReaderMock

Мок IDataReader для тестов Mapper. Ключи — константы из *Metadata. Перед маппингом обязателен Read().

var dataRow = new Dictionary<string, object?>
{
    { EntityMetadata.Id, Guid.NewGuid() },
    { ArticleMetadata.Code, "TEST-001" },
    { ArticleMetadata.Cost, 1000m },
    { ArticleMetadata.StatusCodeId, Guid.NewGuid() }
};
var reader = DataReaderMock.CreateWithData(dataRow);
reader.Read();
var article = _mapper.MapMinimal(reader);

Несколько строк:

var rows = new List<Dictionary<string, object?>>
{
    new Dictionary<string, object?> { { EntityMetadata.Id, id1 }, { ArticleMetadata.Code, "A1" } },
    new Dictionary<string, object?> { { EntityMetadata.Id, id2 }, { ArticleMetadata.Code, "A2" } }
};
var reader = DataReaderMock.CreateWithData(rows);

Пустой reader (для теста исключения):

var emptyReader = new DataReaderMock();
Assert.Throws<InvalidOperationException>(() => _mapper.MapMinimal(emptyReader));

EntityData (тестовый словарь атрибутов)

Образ сущности как словарь. Используется при необходимости явно работать с атрибутами без EntityImage.

var data = new EntityData("TisaArticle", Guid.NewGuid());
data.SetAttributeValue("TisaCost", 1000m);
data.SetAttributeValue("TisaCode", "ART-001");
var cost = data.GetAttributeValue<decimal>("TisaCost");
bool has = data.Contains("TisaCost", "TisaCode");

ExecutorContext

Контекст исполнителя: параметры и результаты через именованные ключи.

var context = new ExecutorContext(userConnection);
context.SetParameter("Target", new EntityValue(contractId, "TisaContract"));
context.SetParameter("IsCreateAll", true);
context.SetResult("ContractStep", 1);
context.SetResult("DateStart", DateTime.Now);

Требования

  • .NET 8.0, .NET 9.0 или .NET 10.0

Лицензия

MIT License

Поддержка

По вопросам поддержки и сообщений об ошибках: support@tisn.ru

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 was computed.  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 was computed.  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 (1)

Showing the top 1 NuGet packages that depend on Tisa.BpmTesting:

Package Downloads
Tisa.BpmApp.Testing

E2E и contract test kit для .NET 8 интеграционных host-приложений BPMSoft.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2026.9.10.316 192 3/16/2026
2026.9.10.313 158 3/13/2026
2026.9.10.310 120 3/8/2026
2026.9.10.306 163 3/5/2026
2026.9.10.305 117 3/5/2026
2026.9.10.300 118 3/5/2026
2026.1.9.705 93 7/7/2026
2026.1.9.321 110 3/21/2026