Tisa.BpmTesting 2026.9.10.313

dotnet add package Tisa.BpmTesting --version 2026.9.10.313
                    
NuGet\Install-Package Tisa.BpmTesting -Version 2026.9.10.313
                    
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.313" />
                    
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.313" />
                    
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.313
                    
#r "nuget: Tisa.BpmTesting, 2026.9.10.313"
                    
#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.313
                    
#: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.313
                    
Install as a Cake Addin
#tool nuget:?package=Tisa.BpmTesting&version=2026.9.10.313
                    
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 при установке пакета.

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

Примеры тестов использования объектов платформы 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 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
2026.9.10.313 23 3/13/2026
2026.9.10.310 76 3/8/2026
2026.9.10.306 83 3/5/2026
2026.9.10.305 79 3/5/2026
2026.9.10.300 76 3/5/2026