Расширения для MSTest, добавляющие удобный fluent-интерфейс к стандартным ассертам. Библиотека предоставляет точки расширения Assert.That, CollectionAssert.That и StringAssert.That, позволяющие писать выразительные, компактные и читаемые проверки без потери информативности сообщений об ошибках.
- Целевая платформа: .NET Standard 2.0 (работает в большинстве тестовых проектов на современном .NET)
- Зависимости: MSTest.TestFramework ≥ 4.0.2
- Лицензия: MIT
- Fluent-интерфейс для проверок значений, коллекций, перечислений и строк
- Расширения:
Assert.That,CollectionAssert.That,StringAssert.That - Чекеры:
ValueChecker<T>и специализированныйDoubleValueChecker(сравнения с точностью, границы, преобразования типов)CollectionChecker<T>иEnumerableChecker<T>(поэлементное сравнение, позиционные проверки, агрегатыMax/Min/Average, проверки наличия/отсутствия элементов)- Поддержка точности для числовых типов и информативные отчёты о расхождениях (включая относительную ошибку)
- Проверки исключений для методов/функций:
Assert.That.Method(...).Throw<TException>() - Строковые проверки через
StringAssert.That.Value(string)сStartWith,EndWith,Contains,Matches,DoesNotMatch,Is(Not)NullOr(White)Space - Понятные сообщения об ошибках с указанием индексов и сводок по различиям, а также данными
Expected/ActualвException.Data - Утилиты для логирования результатов теста:
TestResultExtensions(LogWriteLine,ToDebug,ToDebugEnum)
NuGet-пакет: MathCore.TestsExtensions
Пример установки:
# PackageReferenceInstall-Package MathCore.TestsExtensions
# dotnet CLI
dotnet add package MathCore.TestsExtensionsusingMicrosoft.VisualStudio.TestTools.UnitTesting;[TestClass]publicclassSampleTests{[TestMethod]publicvoidValues_and_Collections(){Assert.That.Value(42).IsEqual(42);varitems=new[]{1,3,5,7};Assert.That.Collection(items).IsNotEmpty().Contains(5).IsEqualTo(1,3,5,7);}}Assert.ThatValue(T),Value(double)— проверки значений и чисел с учётом точностиMethod(Action/Func)— проверки исключенийEnumerable(IEnumerable<T>)— проверки перечисленийCollection(ICollection<T>/T[])— проверки коллекций
CollectionAssert.ThatCollection(…)— проверкиICollection<T>, массивов и специальных форматов (включаяdouble[,])
StringAssert.ThatValue(string)— строковые проверки и проверки по регулярным выражениям
Каждый чекер поддерживает цепочки и имеет свойство And => Assert.That, упрощающее продолжение проверок.
Значения и точность:
Assert.That.Value(1.1).LessOrEqualsThan(1.0,0.1);Assert.That.Value(10).GreaterThan(5);Исключения:
Assert.That.Method(()=>thrownewInvalidOperationException()).Throw<InvalidOperationException>();Перечисления:
IEnumerable<string>actual=new[]{"file3.txt","file4.txt","file5.txt","file6.txt"};IEnumerable<string>expected=new[]{"file3.txt","file4.txt","file5.txt","file6.txt"};Assert.That.Enumerable(actual).IsEqualTo(expected).Contains(s =>s.EndsWith(".txt"));Коллекции:
varitems=new[]{1,3,5,7};varexpected=new[]{1,3,5,7};CollectionAssert.That.Collection(items).IsItemsCount(4).Contains(5).IsEqualTo(expected);Строки:
StringAssert.That.Value("Hello, World!").StartWith("Hello").Contains("World").EndWith("!").Matches(@"^Hello,\sWorld!$");MathCore.TestsExtensions/— библиотека (MathCore.TestsExtensions.csproj), сборка пакета NuGetTests/MathCore.TestsExtensions.Tests/— модульные тесты (MathCore.TestsExtensions.Tests.csproj).github/workflows/— CI-пайплайны для тестирования и публикации
- Тестирование и сборка выполняются в GitHub Actions (
.github/workflows/testing.yml) - Публикация пакета в NuGet через GitHub Actions (
.github/workflows/publish.yml) - В пакете включены символы и SourceLink для удобной отладки
- Идеи и баг-репорты — через Issues
- PR приветствуются: тесты, улучшение сообщений об ошибках, новые fluent-проверки
MIT