Reo.Core.Builder.CodeGeneration
8.0.658
dotnet add package Reo.Core.Builder.CodeGeneration --version 8.0.658
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 8.0.658
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="Reo.Core.Builder.CodeGeneration" Version="8.0.658" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.Builder.CodeGeneration" Version="8.0.658" />
<PackageReference Include="Reo.Core.Builder.CodeGeneration" />
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 Reo.Core.Builder.CodeGeneration --version 8.0.658
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Reo.Core.Builder.CodeGeneration, 8.0.658"
#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 Reo.Core.Builder.CodeGeneration@8.0.658
#: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=Reo.Core.Builder.CodeGeneration&version=8.0.658
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=8.0.658
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Генератор тестовых билдеров для доменных моделей
Описание пакета
Reo.Core.Builder.CodeGeneration — это библиотека для генерации билдеров доменных моделей и методов расширений
для генерации снапшота состояния объекта построенного через сгенерированный билдер для использования в тестах.
По внутренним договоренностям использование пакета должно быть в Application слое решения.
Основные компоненты
IBuilderFor<TModel>Маркерный интерфейс дляpartialклассов, которые используются для создания билдеров доменных моделей.TModel- тип доменной модели.
Требования
Установка
Используйте следующие команды для установки пакета:
# NuGet Package Manager
Install-Package Reo.Core.Builder.CodeGeneration
# .NET CLI
dotnet add package Reo.Core.Builder.CodeGeneration
Настройка
Подготовка
Создайте в проекте маркерный интерфейс.:
/// <summary>
/// Маркерный интерфейс для генерации построителя модели
/// </summary>
[PublicAPI]
public interface IBuilderFor<[MeansTestSubject] T>;
Создайте partial класс который реализует маркерный интерфейс
public partial class MyModelTestBuilder : IBuilderFor<MyModel>;
Доменный класс:
public class MyModel
{
private MyModel(string? name)
{
Name = name;
}
public string? Name { get; set; }
public static MyModel Create(string? name)
{
var result = new MyModel(name);
return result;
}
}
Сгенерированный класс с методами:
public partial class MyModelTestBuilder
{
private string? Name { get; set; }
public MyModelTestBuilder WithName(string name)
{
Name = name;
return this;
}
public MyModelTestBuilder WithNameAsNull()
{
Name = null;
return this;
}
public MyModel CreateMyModel() => MyModel.Create(Name);
}
Принцип действия генератора:
- Копирует все свойства из класса
- Добавляет на основе типов методы для установки значений в свойства в соответствии с явно выраженными намерениями
- Добавляет для статического метода в доменном классе соответствующий метод для создания в билдере
Create*.- Где * - Имя класса
Сгенерированный метод расширения:
public static class MyModelExtensions
{
public static string ToTestingBuilderString(this MyModel model)
{
var sb = new StringBuilder("Mocker.Get<MyModelBuilder>()");
sb.AppendLine();
sb.Append(".WithName");
sb.AppendLine(model.Name.IsNotNullOrWhiteSpace() ? $"(\"{model.Name}\")" : "AsNull()");
sb.AppendLine(".CreateMyModel()");
return sb.ToString();
}
}
Принцип действия генератора:
- Анализирует доменный класс
- Формирует строковое представление для создания в рантайме кода описывающего состояние объекта через билдер
Написание теста:
public class MyModelTests
{
private readonly AutoMocker _mocker = new();
private readonly MyModelTestBuilder _builder;
public MyModelTests() => _builder = _mocker.Get<MyModelTestBuilder>();
[Fact(DisplayName = "Наименование может быть не задано")]
public void Test1()
{
// Arrange
_builder.WithNameAsNull();
// Act
var result = _builder.CreateMyModel();
// Assert
result.Name.Should()
.BeNull();
}
}
Лицензия
Данный пакет распространяется под лицензией MIT.
There are no supported framework assets in this package.
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- JetBrains.Annotations (>= 2025.2.2)
- Reo.Core.CodeGenerator (>= 8.0.658)
- stbychkov.AutoLoggerMessage (>= 1.0.14)
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 |
|---|---|---|
| 8.0.658 | 70 | 10/31/2025 |
| 8.0.657 | 108 | 10/30/2025 |
| 8.0.656 | 103 | 10/30/2025 |
| 8.0.655 | 105 | 10/29/2025 |
| 8.0.654 | 113 | 10/29/2025 |
| 8.0.653 | 103 | 10/28/2025 |
| 8.0.652 | 102 | 10/28/2025 |
| 8.0.651 | 109 | 10/28/2025 |
| 8.0.650 | 148 | 10/27/2025 |
| 8.0.649 | 149 | 10/27/2025 |
| 8.0.648 | 113 | 10/24/2025 |
| 8.0.647 | 119 | 10/24/2025 |
| 8.0.646 | 131 | 10/24/2025 |
| 8.0.645 | 124 | 10/24/2025 |
| 8.0.644 | 161 | 10/23/2025 |
| 8.0.643 | 151 | 10/23/2025 |
| 8.0.642 | 159 | 10/23/2025 |
| 8.0.641 | 156 | 10/22/2025 |
| 8.0.640 | 156 | 10/22/2025 |
| 8.0.639 | 147 | 10/22/2025 |
| 8.0.638 | 149 | 10/22/2025 |
| 8.0.637 | 149 | 10/21/2025 |
| 8.0.636 | 151 | 10/21/2025 |
| 8.0.635 | 151 | 10/21/2025 |
| 8.0.634 | 155 | 10/20/2025 |
| 8.0.633 | 154 | 10/20/2025 |
| 8.0.632 | 160 | 10/20/2025 |
| 8.0.631 | 153 | 10/20/2025 |
| 8.0.630 | 106 | 10/17/2025 |
| 8.0.629 | 162 | 10/13/2025 |
| 8.0.628 | 166 | 10/13/2025 |
| 8.0.627 | 157 | 10/13/2025 |
| 8.0.626 | 87 | 10/10/2025 |
| 8.0.625 | 91 | 10/10/2025 |
| 8.0.624 | 111 | 10/10/2025 |
| 8.0.623 | 118 | 10/10/2025 |
| 8.0.622 | 155 | 10/9/2025 |
| 8.0.621 | 157 | 10/9/2025 |
| 8.0.620 | 158 | 10/9/2025 |
| 8.0.619 | 152 | 10/9/2025 |
| 8.0.618 | 161 | 10/9/2025 |
| 8.0.617 | 151 | 10/9/2025 |
| 8.0.616 | 155 | 10/9/2025 |
| 8.0.615 | 158 | 10/9/2025 |
| 8.0.614 | 153 | 10/8/2025 |
| 8.0.613 | 157 | 10/8/2025 |
| 8.0.612 | 161 | 10/6/2025 |
| 8.0.611 | 117 | 10/3/2025 |
| 8.0.610 | 123 | 10/3/2025 |
| 8.0.609 | 114 | 10/3/2025 |
| 8.0.608 | 125 | 10/3/2025 |
| 8.0.607 | 124 | 10/3/2025 |
| 8.0.606 | 124 | 10/3/2025 |
| 8.0.605 | 125 | 10/3/2025 |
| 8.0.604 | 124 | 10/3/2025 |
| 8.0.603 | 127 | 10/3/2025 |
| 8.0.602 | 163 | 10/2/2025 |
| 8.0.600 | 170 | 10/2/2025 |
| 8.0.599 | 156 | 10/2/2025 |
| 8.0.598 | 163 | 10/1/2025 |
| 8.0.597 | 159 | 10/1/2025 |
| 8.0.596 | 162 | 10/1/2025 |
| 8.0.595 | 156 | 9/30/2025 |
| 8.0.594 | 154 | 9/30/2025 |
| 8.0.593 | 149 | 9/30/2025 |
| 8.0.592 | 159 | 9/30/2025 |
| 8.0.591 | 156 | 9/30/2025 |
| 8.0.589 | 152 | 9/29/2025 |
| 8.0.588 | 164 | 9/29/2025 |
| 8.0.587 | 148 | 9/29/2025 |
| 8.0.586 | 154 | 9/29/2025 |
| 8.0.585 | 159 | 9/29/2025 |
| 8.0.583 | 122 | 9/26/2025 |
| 8.0.582 | 142 | 9/26/2025 |
| 8.0.580 | 161 | 9/25/2025 |
| 8.0.579 | 166 | 9/25/2025 |
| 8.0.578 | 165 | 9/25/2025 |
| 8.0.577 | 152 | 9/25/2025 |
| 8.0.576 | 148 | 9/25/2025 |
| 8.0.575 | 166 | 9/25/2025 |
| 8.0.574 | 171 | 9/24/2025 |
| 8.0.573 | 166 | 9/23/2025 |
| 8.0.572 | 152 | 9/23/2025 |
| 8.0.571 | 171 | 9/23/2025 |
| 8.0.570 | 163 | 9/23/2025 |
| 8.0.569 | 186 | 9/22/2025 |
| 8.0.568 | 210 | 9/22/2025 |
| 8.0.567 | 223 | 9/22/2025 |
| 8.0.566 | 192 | 9/21/2025 |
| 6.0.658 | 64 | 10/31/2025 |
| 6.0.657 | 100 | 10/30/2025 |
| 6.0.656 | 99 | 10/30/2025 |
| 6.0.655 | 96 | 10/29/2025 |
| 6.0.654 | 98 | 10/29/2025 |
| 6.0.653 | 104 | 10/28/2025 |
| 6.0.652 | 97 | 10/28/2025 |
| 6.0.651 | 107 | 10/28/2025 |
| 6.0.650 | 146 | 10/27/2025 |
| 6.0.649 | 147 | 10/27/2025 |
| 6.0.648 | 109 | 10/24/2025 |
| 6.0.647 | 116 | 10/24/2025 |
| 6.0.646 | 124 | 10/24/2025 |
| 6.0.645 | 120 | 10/24/2025 |
| 6.0.644 | 158 | 10/23/2025 |
| 6.0.643 | 160 | 10/23/2025 |
| 6.0.642 | 156 | 10/23/2025 |
| 6.0.641 | 147 | 10/22/2025 |
| 6.0.640 | 149 | 10/22/2025 |
| 6.0.639 | 146 | 10/22/2025 |
| 6.0.638 | 151 | 10/22/2025 |
| 6.0.637 | 143 | 10/21/2025 |
| 6.0.636 | 154 | 10/21/2025 |
| 6.0.635 | 150 | 10/21/2025 |
| 6.0.634 | 154 | 10/20/2025 |
| 6.0.633 | 154 | 10/20/2025 |
| 6.0.632 | 153 | 10/20/2025 |
| 6.0.631 | 152 | 10/20/2025 |
| 6.0.630 | 112 | 10/17/2025 |
| 6.0.629 | 158 | 10/13/2025 |
| 6.0.628 | 160 | 10/13/2025 |
| 6.0.627 | 159 | 10/13/2025 |
| 6.0.626 | 83 | 10/10/2025 |
| 6.0.625 | 88 | 10/10/2025 |
| 6.0.624 | 105 | 10/10/2025 |
| 6.0.623 | 116 | 10/10/2025 |
| 6.0.622 | 153 | 10/9/2025 |
| 6.0.621 | 150 | 10/9/2025 |
| 6.0.620 | 155 | 10/9/2025 |
| 6.0.619 | 154 | 10/9/2025 |
| 6.0.618 | 155 | 10/9/2025 |
| 6.0.617 | 152 | 10/9/2025 |
| 6.0.616 | 152 | 10/9/2025 |
| 6.0.615 | 156 | 10/9/2025 |
| 6.0.614 | 157 | 10/8/2025 |
| 6.0.613 | 156 | 10/8/2025 |
| 6.0.612 | 153 | 10/6/2025 |
| 6.0.611 | 115 | 10/3/2025 |
| 6.0.610 | 113 | 10/3/2025 |
| 6.0.609 | 103 | 10/3/2025 |
| 6.0.608 | 117 | 10/3/2025 |
| 6.0.607 | 121 | 10/3/2025 |
| 6.0.606 | 125 | 10/3/2025 |
| 6.0.605 | 123 | 10/3/2025 |
| 6.0.604 | 120 | 10/3/2025 |
| 6.0.603 | 134 | 10/3/2025 |
| 6.0.602 | 160 | 10/2/2025 |
| 6.0.600 | 162 | 10/2/2025 |
| 6.0.599 | 155 | 10/2/2025 |
| 6.0.598 | 164 | 10/1/2025 |
| 6.0.597 | 160 | 10/1/2025 |
| 6.0.596 | 161 | 10/1/2025 |
| 6.0.595 | 152 | 9/30/2025 |
| 6.0.594 | 160 | 9/30/2025 |
| 6.0.593 | 160 | 9/30/2025 |
| 6.0.592 | 156 | 9/30/2025 |
| 6.0.591 | 158 | 9/30/2025 |
| 6.0.589 | 159 | 9/29/2025 |
| 6.0.588 | 158 | 9/29/2025 |
| 6.0.587 | 160 | 9/29/2025 |
| 6.0.586 | 154 | 9/29/2025 |
| 6.0.585 | 155 | 9/29/2025 |
| 6.0.583 | 119 | 9/26/2025 |
| 6.0.582 | 143 | 9/26/2025 |
| 6.0.580 | 163 | 9/25/2025 |
| 6.0.579 | 167 | 9/25/2025 |
| 6.0.578 | 160 | 9/25/2025 |
| 6.0.577 | 158 | 9/25/2025 |
| 6.0.576 | 159 | 9/25/2025 |
| 6.0.575 | 159 | 9/25/2025 |
| 6.0.574 | 166 | 9/24/2025 |
| 6.0.573 | 153 | 9/23/2025 |
| 6.0.572 | 164 | 9/23/2025 |
| 6.0.571 | 164 | 9/23/2025 |
| 6.0.570 | 166 | 9/23/2025 |
| 6.0.569 | 185 | 9/22/2025 |
| 6.0.568 | 206 | 9/22/2025 |
| 6.0.567 | 222 | 9/22/2025 |
| 6.0.566 | 189 | 9/21/2025 |