Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
<NUnitVersion Condition="'$(NUnitVersion)' == ''">4.1.0</NUnitVersion>
<NUnit3TestAdapterVersion Condition="'$(NUnit3TestAdapterVersion)' == ''">4.5.0</NUnit3TestAdapterVersion>
<FluentAssertionsVersion Condition="'$(FluentAssertionsVersion)' == ''">6.12.0</FluentAssertionsVersion>
<xUnitV3Version Condition="'$(xUnitV3Version)' == ''">3.2.0</xUnitV3Version>
<xUnitRunnerVisualStudioVersion Condition="'$(xUnitRunnerVisualStudioVersion)' == ''">3.1.5</xUnitRunnerVisualStudioVersion>
<ShouldlyVersion Condition="'$(ShouldlyVersion)' == ''">4.3.0</ShouldlyVersion>
<CoverletCollectorVersion Condition="'$(CoverletCollectorVersion)' == ''">6.0.2</CoverletCollectorVersion>
<NewtonsoftJsonVersion Condition="'$(NewtonsoftJsonVersion)' == ''">13.0.3</NewtonsoftJsonVersion>
<XamarinUITestVersion Condition="'$(XamarinUITestVersion)' == ''">4.3.4</XamarinUITestVersion>
Expand Down
3 changes: 3 additions & 0 deletions src/Uno.Templates/Uno.Templates.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
<ReplaceFileText Filename="%(_VersionableFile.Identity)" MatchExpression="$MicrosoftTestSdk$" ReplacementText="$(MicrosoftTestSdkVersion)" />
<ReplaceFileText Filename="%(_VersionableFile.Identity)" MatchExpression="$NUnit$" ReplacementText="$(NUnitVersion)" />
<ReplaceFileText Filename="%(_VersionableFile.Identity)" MatchExpression="$NUnit3TestAdapter$" ReplacementText="$(NUnit3TestAdapterVersion)" />
<ReplaceFileText Filename="%(_VersionableFile.Identity)" MatchExpression="$xUnitV3$" ReplacementText="$(xUnitV3Version)" />
<ReplaceFileText Filename="%(_VersionableFile.Identity)" MatchExpression="$xUnitRunnerVisualStudio$" ReplacementText="$(xUnitRunnerVisualStudioVersion)" />
<ReplaceFileText Filename="%(_VersionableFile.Identity)" MatchExpression="$Shouldly$" ReplacementText="$(ShouldlyVersion)" />
<ReplaceFileText Filename="%(_VersionableFile.Identity)" MatchExpression="$FluentAssertions$" ReplacementText="$(FluentAssertionsVersion)" />
<ReplaceFileText Filename="%(_VersionableFile.Identity)" MatchExpression="$CoverletCollector$" ReplacementText="$(CoverletCollectorVersion)" />
<ReplaceFileText Filename="%(_VersionableFile.Identity)" MatchExpression="$NewtonsoftJson$" ReplacementText="$(NewtonsoftJsonVersion)" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@
"renderer": "skia"
},
"Features": [
".NET 8",
".NET 10",
"XAML"
]
},
Expand Down Expand Up @@ -154,7 +154,7 @@
"renderer": "skia"
},
"Features": [
".NET 8",
".NET 10",
"XAML",
"MVUX",
"Material",
Expand Down Expand Up @@ -292,7 +292,7 @@
"Title": "",
"SectionType": "MultiSelect",
"SymbolId": "tests",
"Choices": [ "unit", "ui" ]
"Choices": [ "nunit", "xunit", "ui" ]
}
],
"Theme": [
Expand Down Expand Up @@ -649,7 +649,10 @@
"tests.ui": {
"Icon": "/Assets/Test.UiTest.svg"
},
"tests.unit": {
"tests.xunit": {
"Icon": "/Assets/Test.UnitTest.svg"
},
"tests.nunit": {

"Icon": "/Assets/Test.UnitTest.svg"
},
Expand Down
301 changes: 163 additions & 138 deletions src/Uno.Templates/content/unoapp/.template.config/template.json

Large diffs are not rendered by default.

39 changes: 37 additions & 2 deletions src/Uno.Templates/content/unoapp/AzurePipelines/jobs/unit-test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
jobs:
- job: unit_test
displayName: Unit Tests
#if (useNUnitTests)
- job: n_unit_test
displayName: NUnit Tests
pool:
vmImage: $(windowsAgent)
steps:
Expand All @@ -26,3 +27,37 @@ jobs:
runTestsInIsolation: true
codeCoverageEnabled: true
rerunFailedTests: true
#elseif (useXUnitTests)

# Learn how to get xUnit test results in Azure DevOps: https://xunit.net/docs/getting-test-results-in-azure-devops

- job: x_unit_test
displayName: xUnit Tests
pool:
vmImage: $(windowsAgent)
steps:
- checkout: self
fetchDepth: 0

- template: ../steps/install-dependencies.yml

- task: MSBuild@1
inputs:
solution: ./MyExtensionsApp.1.xUnitTests/MyExtensionsApp.1.xUnitTests.csproj
configuration: 'Release'
msbuildArguments: '/p:OverrideTargetFramework=$baseTargetFramework$ /r'

- task: VSTest@2
type: Visual Studio Test
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\bin\$(BuildConfiguration)\**\*.xUnitTests.dll
!**\ref\**
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
runTestsInIsolation: true
codeCoverageEnabled: true
rerunFailedTests: true
#else
#endif
12 changes: 10 additions & 2 deletions src/Uno.Templates/content/unoapp/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,19 @@
-->
<ItemGroup>
<!--#if (useTestSolutionFolder)-->
<PackageVersion Include="coverlet.collector" Version="$CoverletCollector$" />
<PackageVersion Include="FluentAssertions" Version="$FluentAssertions$" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="$MicrosoftTestSdk$" />
<!--#if (useNUnit)-->
<PackageVersion Include="NUnit" Version="$NUnit$" />
<PackageVersion Include="NUnit3TestAdapter" Version="$NUnit3TestAdapter$" />
<PackageVersion Include="coverlet.collector" Version="$CoverletCollector$" />
<PackageVersion Include="FluentAssertions" Version="$FluentAssertions$" />
<!--#endif-->
<!--#if (usexUnit)-->
<PackageVersion Include="xUnit.v3" Version="$xUnitV3$" />
<PackageVersion Include="xUnit.runner.visualstudio" Version="$xUnitRunnerVisualStudio$" />
<PackageVersion Include="Shouldly" Version="$Shouldly$" />
<!--#endif-->
<!--#endif-->
<!--#if (useGitHubActions)-->
<PackageVersion Include="GitHubActionsTestLogger" Version="2.3.3" />
<!--#endif-->
Expand Down
31 changes: 28 additions & 3 deletions src/Uno.Templates/content/unoapp/GitHub/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ jobs:
- name: Build MyExtensionsApp.1 (Debug)
shell: pwsh
run: msbuild ./MyExtensionsApp.1/MyExtensionsApp.1.csproj /r
#if (useUnitTests)
#if (useNUnitTests)

unit_test:
name: Unit Tests
name: NUnit Tests
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
Expand All @@ -56,8 +56,33 @@ jobs:
shell: pwsh
run: msbuild ./MyExtensionsApp.1.Tests/MyExtensionsApp.1.Tests.csproj /p:Configuration=Release /p:OverrideTargetFramework=$baseTargetFramework$ /r

- name: Run Unit Tests
- name: Run NUnit Tests
shell: pwsh
run: dotnet test ./MyExtensionsApp.1.Tests/MyExtensionsApp.1.Tests.csproj --no-build -c Release --logger GitHubActions --blame-crash --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
#elseif (useXUnitTests)

unit_test:
name: xUnit Tests
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Install Dependencies
timeout-minutes: ${{ fromJSON(env.STEP_TIMEOUT_MINUTES) }}
uses: "./.github/steps/install_dependencies"

# Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1.3.1

- name: Build MyExtensionsApp.1.xUnitTests (Release)
shell: pwsh
run: msbuild ./MyExtensionsApp.1.xUnitTests/MyExtensionsApp.1.xUnitTests.csproj /p:Configuration=Release /p:OverrideTargetFramework=$baseTargetFramework$ /r

- name: Run Unit xUnitTests
shell: pwsh
run: dotnet test ./MyExtensionsApp.1.xUnitTests/MyExtensionsApp.1.xUnitTests.csproj --no-build -c Release --logger GitHubActions --blame-crash --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
#else
#endif
43 changes: 40 additions & 3 deletions src/Uno.Templates/content/unoapp/MyExtensionsApp.1.sln
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,14 @@ EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyExtensionsApp.1.MauiControls", "MyExtensionsApp.1.MauiControls\MyExtensionsApp.1.MauiControls.csproj", "{85978B6F-B8F7-4FFC-A392-37A1FD49E0C2}"
EndProject
#//#endif
#//#if (useUnitTests)
#//#if (useNUnitTests)
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyExtensionsApp.1.Tests", "MyExtensionsApp.1.Tests\MyExtensionsApp.1.Tests.csproj", "{EB3EB846-D5CB-4140-834F-1CC40A0FD6D0}"
EndProject
#//#endif
#//#if (usexUnitTests)
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyExtensionsApp.1.xUnitTests", "MyExtensionsApp.1.xUnitTests\MyExtensionsApp.1.xUnitTests.csproj", "{D014C449-63F8-46A7-8703-D086DEEEECE9}"
EndProject
#//#endif
#//#if (useUITests)
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyExtensionsApp.1.UITests", "MyExtensionsApp.1.UITests\MyExtensionsApp.1.UITests.csproj", "{7229D034-7DBE-4FD7-B0E4-38D617571F93}"
EndProject
Expand Down Expand Up @@ -195,7 +199,7 @@ Global
{BACDD33A-304C-46C4-9B00-AC166978D7E0}.Release|x86.ActiveCfg = Release|Any CPU
{BACDD33A-304C-46C4-9B00-AC166978D7E0}.Release|x86.Build.0 = Release|Any CPU
{BACDD33A-304C-46C4-9B00-AC166978D7E0}.Release|x86.Deploy.0 = Release|Any CPU
#//#if (useUnitTests)
#//#if (useNUnitTests)
{EB3EB846-D5CB-4140-834F-1CC40A0FD6D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB3EB846-D5CB-4140-834F-1CC40A0FD6D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB3EB846-D5CB-4140-834F-1CC40A0FD6D0}.Debug|ARM.ActiveCfg = Debug|Any CPU
Expand Down Expand Up @@ -225,6 +229,36 @@ Global
{EB3EB846-D5CB-4140-834F-1CC40A0FD6D0}.Release|x86.ActiveCfg = Release|Any CPU
{EB3EB846-D5CB-4140-834F-1CC40A0FD6D0}.Release|x86.Build.0 = Release|Any CPU
#//#endif
#//#if (usexUnitTests)
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|ARM.Build.0 = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|ARM64.Build.0 = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|iPhone.Build.0 = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|x64.ActiveCfg = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|x64.Build.0 = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|x86.ActiveCfg = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Debug|x86.Build.0 = Debug|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|Any CPU.Build.0 = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|ARM.ActiveCfg = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|ARM.Build.0 = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|ARM64.ActiveCfg = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|ARM64.Build.0 = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|iPhone.ActiveCfg = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|iPhone.Build.0 = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|x64.ActiveCfg = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|x64.Build.0 = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|x86.ActiveCfg = Release|Any CPU
{D014C449-63F8-46A7-8703-D086DEEEECE9}.Release|x86.Build.0 = Release|Any CPU
#//#endif
#//#if (useUITests)
{7229D034-7DBE-4FD7-B0E4-38D617571F93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7229D034-7DBE-4FD7-B0E4-38D617571F93}.Debug|Any CPU.Build.0 = Debug|Any CPU
Expand Down Expand Up @@ -272,9 +306,12 @@ Global
#//#if (mauiEmbedding)
{85978B6F-B8F7-4FFC-A392-37A1FD49E0C2} = {FAA2C1DE-F859-4053-9573-6245F7E832EF}
#//#endif
#//#if (useUnitTests)
#//#if (useNUnitTests)
{EB3EB846-D5CB-4140-834F-1CC40A0FD6D0} = {7EF70027-9874-4112-A14F-33F02169CF8A}
#//#endif
#//#if (usexUnitTests)
{D014C449-63F8-46A7-8703-D086DEEEECE9} = {7EF70027-9874-4112-A14F-33F02169CF8A}
#//#endif
#//#if (useUITests)
{7229D034-7DBE-4FD7-B0E4-38D617571F93} = {7EF70027-9874-4112-A14F-33F02169CF8A}
#//#endif
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//-:cnd:noEmit
namespace MyExtensionsApp._1.xUnitTests;

public class AppInfoTests
{
[Fact]
public void AppInfoCreation()
{
var appInfo = new AppConfig { Environment = "Test" };
appInfo.ShouldNotBeNull();
appInfo.Environment.ShouldBe("Test");
Assert.NotNull(appInfo);
Assert.Equal("Test", appInfo.Environment);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
//+:cnd:noEmit
global using Shouldly;
#if useBusinessModelsNamespace
global using MyExtensionsApp._1.Models;
#endif
global using Xunit;
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>$baseTargetFramework$</TargetFramework>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<OutputType>Exe</OutputType>
<!--
This template uses native xUnit.net command line options when using 'dotnet run' and
VSTest by default when using 'dotnet test'. For more information on how to enable support
for Microsoft Testing Platform, please visit:
https://xunit.net/docs/getting-started/v3/microsoft-testing-platform
Using .NET SDK version 8 or 9.0:
https://xunit.net/docs/getting-started/v3/microsoft-testing-platform#using-net-sdk-version-8-or-9
Using .NET SDK version 10 or later:
https://xunit.net/docs/getting-started/v3/microsoft-testing-platform#using-net-sdk-version-10-or-later
-->
</PropertyGroup>

<ItemGroup>
<Content Include="xunit.runner.json" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Shouldly" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="xUnit.v3" />
<PackageReference Include="xUnit.runner.visualstudio" />
<PackageReference Include="coverlet.collector" />
<!--#if (useGitHubActions)-->
<PackageReference Include="GitHubActionsTestLogger">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<!--#endif-->
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\MyExtensionsApp.1\MyExtensionsApp.1.csproj" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace MyExtensionsApp._1.xUnitTests;

public class UnitTest1
{
[Fact]
public void Test1()
{
Assert.True(true);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"$schema": "https://xunit.net/schema/current/xunit.runner.schema.json"
}
2 changes: 1 addition & 1 deletion src/Uno.Templates/content/unoapp/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ stages:
displayName: Tests
jobs:
- template: build/jobs/smoke-test.yml
#if (useUnitTests)
#if (useNUnitTests)

- template: build/jobs/unit-test.yml
#else
Expand Down
2 changes: 1 addition & 1 deletion tools/TemplateTfmSwitchGenerator/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
new Platform("platforms == windows", "platforms != windows", "windows10.0.26100"),
new Platform("platforms == wasm", "platforms != wasm", "browserwasm"),
new Platform("platforms == desktop", "platforms != desktop", "desktop"),
new Platform("useUnitTests == true", "useUnitTests == false", null)
new Platform("useNUnitTests == true", "useNUnitTests == false", null)
];

string[] runtimes = ["net9.0", "net10.0"];
Expand Down
Loading