diff --git a/.github/workflows/dotnet-tests.yml b/.github/workflows/dotnet-tests.yml new file mode 100644 index 0000000..3c880d6 --- /dev/null +++ b/.github/workflows/dotnet-tests.yml @@ -0,0 +1,69 @@ +name: .NET Framework Tests + +on: + push: + paths: + - 'src/**' + - 'tests/**' + - 'FB2Toolbox.sln' + - '**/*.csproj' + - '.github/workflows/dotnet-tests.yml' + pull_request: + paths: + - 'src/**' + - 'tests/**' + - 'FB2Toolbox.sln' + - '**/*.csproj' + - '.github/workflows/dotnet-tests.yml' + +jobs: + build-and-test: + # .NET Framework projects (TargetFramework v4.8) require Windows/MSBuild + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v2 + + - name: Install NuGet + uses: NuGet/setup-nuget@v1 + + - name: Restore NuGet packages + run: nuget restore FB2Toolbox.sln + shell: pwsh + + - name: Build solution with MSBuild + run: msbuild FB2Toolbox.sln /p:Configuration=Release /m + shell: pwsh + + - name: Run unit tests with xUnit + run: | + $testDll = "tests\FB2ToolboxUnitTest\bin\x86\Release\FB2ToolboxUnitTest.dll" + + if (-Not (Test-Path $testDll)) { + Write-Error "Test assembly not found at: $testDll" + exit 1 + } + + Write-Host "Running xUnit tests from: $testDll" + + # Use VSTest with xUnit adapter (from xunit.runner.visualstudio package) + # VSTest is available on windows-latest runners + $vstestPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" + + if (-Not (Test-Path $vstestPath)) { + # Try alternative paths for different VS editions + $vstestPath = Get-ChildItem "C:\Program Files\Microsoft Visual Studio\2022" -Recurse -Filter "vstest.console.exe" -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName + } + + if (-Not $vstestPath) { + Write-Error "vstest.console.exe not found" + exit 1 + } + + Write-Host "Using VSTest from: $vstestPath" + & $vstestPath $testDll /logger:"console;verbosity=normal" + shell: pwsh diff --git a/docs/RELEASE_v1.9.1.md b/docs/RELEASE_v1.9.1.md new file mode 100644 index 0000000..b8f2b23 --- /dev/null +++ b/docs/RELEASE_v1.9.1.md @@ -0,0 +1,36 @@ +Релиз 1.9.1 - 6 ноября 2025 года + +Исправлены мелкие ошибки и внесены улучшения в тестовый код. + +### Изменено +- Миграция тестов с MSTest на xUnit +- Замена фреймворка тестирования на xUnit с использованием AwesomeAssertions для более удобных и читаемых утверждений +- Рефакторинг больших тестовых файлов на более мелкие и сфокусированные модули +- Обновление атрибутов тестов (`[TestClass]`, `[TestMethod]`) на эквиваленты xUnit (`[Fact]`, `[Trait]`) +- Модернизация методов утверждений с использованием fluent-синтаксиса (например, `Should().Be`, `Should().Throw`) +- Улучшена читаемость и поддерживаемость тестового кода +- Обновление зависимостей проекта с добавлением xUnit и AwesomeAssertions + +### Добавлено +- Новые тестовые файлы для лучшей организации: + - `CharacterSubstitutionElementTests.cs` + - `CommandElementTests.cs` + - `EncodingElementTests.cs` + - `FB2EncoderFallbackBufferTests.cs` + - `FBEncoderFallbackTests.cs` + - `FileMetadataTests.cs` + - `FileOperationResultTests.cs` + - `FilePropertiesTests.cs` + - `GenreSubstitutionElementTests.cs` + - `GenresCollectionTests.cs` + - `RenameProfileElementTests.cs` +- Файл `packages.config` для управления зависимостями NuGet +- Расширенное покрытие тестами с дополнительными тестовыми случаями + +### Удалено +- Старые монолитные тестовые файлы (`ConfigTests.cs`, `FileUtilsTests.cs`) в пользу модульной структуры + +### Техническая информация +- Рефакторинг структуры тестов улучшает поддерживаемость и масштабируемость проекта +- Использование современных паттернов тестирования для повышения качества кода +- Улучшена обработка исключений в тестах diff --git a/index.html b/index.html index 5aa3c41..0ff7a89 100644 --- a/index.html +++ b/index.html @@ -91,10 +91,10 @@