From b14f2118da846ac2a88f96f4842739c614c7d705 Mon Sep 17 00:00:00 2001 From: Infarh Date: Mon, 17 Nov 2025 00:37:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=B4=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20readme.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MathCore.TestsExtensions.sln | 3 +- .../MathCore.TestsExtensions.csproj | 2 +- MathCore.TestsExtensions/readme.md | 56 +++++++++---------- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/MathCore.TestsExtensions.sln b/MathCore.TestsExtensions.sln index 39a844d..f0361b7 100644 --- a/MathCore.TestsExtensions.sln +++ b/MathCore.TestsExtensions.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 18 -VisualStudioVersion = 18.0.11205.157 d18.0 +VisualStudioVersion = 18.0.11205.157 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MathCore.TestsExtensions", "MathCore.TestsExtensions\MathCore.TestsExtensions.csproj", "{0F039156-E6CB-4EFB-A863-13A1AC2DD4AE}" EndProject @@ -10,6 +10,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Service", ".Service", "{29B29638-89EC-4383-B587-AE8C981DED4F}" ProjectSection(SolutionItems) = preProject .github\copilot-instructions.md = .github\copilot-instructions.md + README.md = README.md EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{D6A23A02-D860-4101-AB7B-0C7FB57331CB}" diff --git a/MathCore.TestsExtensions/MathCore.TestsExtensions.csproj b/MathCore.TestsExtensions/MathCore.TestsExtensions.csproj index f7dfde7..a3f3226 100644 --- a/MathCore.TestsExtensions/MathCore.TestsExtensions.csproj +++ b/MathCore.TestsExtensions/MathCore.TestsExtensions.csproj @@ -9,7 +9,7 @@ - 1.0.0 + 1.0.0.1 Актуализация пакета и зависимостей, поддержка netstandard2.0 diff --git a/MathCore.TestsExtensions/readme.md b/MathCore.TestsExtensions/readme.md index b88caae..37d6ff1 100644 --- a/MathCore.TestsExtensions/readme.md +++ b/MathCore.TestsExtensions/readme.md @@ -1,20 +1,20 @@ -# MathCore.TestsExtensions +# MathCore.TestsExtensions - MSTest, fluent- : +Расширения для MSTest, добавляющие удобный fluent-интерфейс к стандартным ассертам через точки расширения: - `Assert.That` - `CollectionAssert.That` - `StringAssert.That` - API: , , , . +Пакет помогает писать выразительные и компактные проверки со связным API: проверка значений, коллекций, перечислений, строк и исключений с наглядными сообщениями об ошибках. -## +## Установка -- : .NET Standard 2.0 -- : MSTest.TestFramework >= 4.0.2 +- Платформа: .NET Standard 2.0 +- Зависимость: MSTest.TestFramework >= 4.0.2 -NuGet-: MathCore.TestsExtensions +NuGet-пакет: MathCore.TestsExtensions -## +## Быстрый старт ```csharp using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -36,24 +36,24 @@ public class SampleTests } ``` -## fluent- +## Точки расширения и fluent-интерфейс - `That` : -- `Assert.That` (`Value`), / (`Method`), (`Enumerable`) (`Collection`) -- `CollectionAssert.That` (`Collection`) -- `StringAssert.That` `Value(string)` +Пакет добавляет расширение `That` к стандартным ассертам: +- `Assert.That` — проверки значений (`Value`), функций/действий (`Method`), перечислений (`Enumerable`) и коллекций (`Collection`) +- `CollectionAssert.That` — проверки коллекций (`Collection`) +- `StringAssert.That` — проверки строк через `Value(string)` - : , -. `And => Assert.That`, . +Базовый паттерн использования: начать с нужной «точки», получить «чекер» и вызывать цепочкой методы-проверки. Для удобства большинство чекеров имеют свойство `And => Assert.That`, позволяя продолжать цепочку с новой проверки. -### : Assert.That +### Примеры: Assert.That - : +Проверка значения и сравнение с точностью: ```csharp Assert.That.Value(1.1).LessOrEqualsThan(1.0, 0.1); Assert.That.Value(10).GreaterThan(5); ``` - : +Проверка исключений: ```csharp Assert.That.Method(() => throw new InvalidOperationException()) .Throw(); @@ -62,7 +62,7 @@ Assert.That.Method(() => 1 / 0) .Throw(); ``` - (`IEnumerable`): +Перечисления (`IEnumerable`): ```csharp IEnumerable actual = new[] { "file3.txt", "file4.txt", "file5.txt", "file6.txt" }; IEnumerable expected = new[] { "file3.txt", "file4.txt", "file5.txt", "file6.txt" }; @@ -71,9 +71,9 @@ Assert.That.Enumerable(actual).IsEqualTo(expected); Assert.That.Enumerable(actual).Contains(s => s.EndsWith(".txt")); ``` -### : CollectionAssert.That +### Примеры: CollectionAssert.That - `ICollection` : +Проверки для `ICollection` и массивов: ```csharp var items = new[] { 1, 3, 5, 7 }; @@ -86,7 +86,7 @@ var expected = new[] { 1, 3, 5, 7 }; CollectionAssert.That.Collection(items).IsEqualTo(expected); ``` - double: +Покрытие сценариев с точностью для double: ```csharp double[] actual = { 1.0, 2.0, 3.000000001 }; double[] expected = { 1.0, 2.0, 3.0 }; @@ -94,9 +94,9 @@ double[] expected = { 1.0, 2.0, 3.0 }; Assert.That.Collection(actual).IsEqualTo(expected, 1e-8); ``` -### : StringAssert.That +### Примеры: StringAssert.That - `ValueChecker`: +Строковые проверки через `ValueChecker`: ```csharp StringAssert.That.Value("Hello, World!") .StartWith("Hello") @@ -105,9 +105,9 @@ StringAssert.That.Value("Hello, World!") .Matches(@"^Hello,\sWorld!$"); ``` -## : / +## Дополнительно: работа с элементами перечислений/коллекций - : +Позиционные проверки и сводные метрики: ```csharp var xs = Enumerable.Range(0, 10).ToArray(); @@ -121,10 +121,10 @@ Assert.That.Enumerable(xs) .Average(x => x).IsEqual(4.5); ``` -## +## Сообщения об ошибках - : ( ), `Expected` `Actual` `Exception.Data`. +Чекеры формируют понятные сообщения: при неравенстве указываются индексы элементов и сводки по расхождениям (включая относительную ошибку для числовых типов), а также прикладываются `Expected` и `Actual` в `Exception.Data`. -## +## Лицензия MIT