Browse Source

Reuse same tests for XUnit and NUnit

pull/11169/head
Max Katz 3 years ago
parent
commit
8e4b76cb19
  1. 9
      tests/Avalonia.Headless.NUnit.UnitTests/AssemblyInfo.cs
  2. 29
      tests/Avalonia.Headless.NUnit.UnitTests/Avalonia.Headless.NUnit.UnitTests.csproj
  3. 3
      tests/Avalonia.Headless.UnitTests/InputTests.cs
  4. 3
      tests/Avalonia.Headless.UnitTests/RenderingTests.cs
  5. 5
      tests/Avalonia.Headless.UnitTests/TestApplication.cs
  6. 20
      tests/Avalonia.Headless.UnitTests/ThreadingTests.cs
  7. 7
      tests/Avalonia.Headless.XUnit.UnitTests/AssemblyInfo.cs
  8. 7
      tests/Avalonia.Headless.XUnit.UnitTests/Avalonia.Headless.XUnit.UnitTests.csproj

9
tests/Avalonia.Headless.NUnit.UnitTests/AssemblyInfo.cs

@ -0,0 +1,9 @@
global using NUnit.Framework;
global using AvaloniaFactAttribute = Avalonia.Headless.NUnit.AvaloniaTestAttribute;
global using AvaloniaTheoryAttribute = Avalonia.Headless.NUnit.AvaloniaTheoryAttribute;
global using InlineDataAttribute = NUnit.Framework.TestCaseAttribute;
using Avalonia.Headless;
using Avalonia.Headless.UnitTests;
[assembly: AvaloniaTestApplication(typeof(TestApplication))]

29
tests/Avalonia.Headless.NUnit.UnitTests/Avalonia.Headless.NUnit.UnitTests.csproj

@ -0,0 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<IsTestProject>true</IsTestProject>
<DefineConstants>$(DefineConstants);NUNIT</DefineConstants>
</PropertyGroup>
<Import Project="..\..\build\UnitTests.NetCore.targets" />
<Import Project="..\..\build\UnitTests.NetFX.props" />
<Import Project="..\..\build\Moq.props" />
<Import Project="..\..\build\Rx.props" />
<Import Project="..\..\build\SharedVersion.props" />
<ItemGroup>
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\Avalonia.Headless.UnitTests\**\*.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Avalonia.Themes.Simple\Avalonia.Themes.Simple.csproj" />
<ProjectReference Include="..\..\src\Headless\Avalonia.Headless.NUnit\Avalonia.Headless.NUnit.csproj" />
<ProjectReference Include="..\..\src\Skia\Avalonia.Skia\Avalonia.Skia.csproj" />
</ItemGroup>
</Project>

3
tests/Avalonia.Headless.UnitTests/InputTests.cs

@ -2,13 +2,12 @@ using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Layout;
using Avalonia.Threading;
using Xunit;
namespace Avalonia.Headless.UnitTests;
public class InputTests
{
[Fact]
[AvaloniaFact]
public void Should_Click_Button_On_Window()
{
var buttonClicked = false;

3
tests/Avalonia.Headless.UnitTests/RenderingTests.cs

@ -2,13 +2,12 @@
using Avalonia.Layout;
using Avalonia.Media;
using Avalonia.Threading;
using Xunit;
namespace Avalonia.Headless.UnitTests;
public class RenderingTests
{
[Fact]
[AvaloniaFact]
public void Should_Render_Last_Frame_To_Bitmap()
{
var window = new Window

5
tests/Avalonia.Headless.UnitTests/TestApplication.cs

@ -1,10 +1,5 @@
using Avalonia.Headless.UnitTests;
using Avalonia.Headless.XUnit;
using Avalonia.Themes.Simple;
using Xunit;
[assembly: AvaloniaTestFramework(typeof(TestApplication))]
[assembly: CollectionBehavior(DisableTestParallelization = true)]
namespace Avalonia.Headless.UnitTests;

20
tests/Avalonia.Headless.UnitTests/ThreadingTests.cs

@ -2,31 +2,37 @@
using System.Threading;
using System.Threading.Tasks;
using Avalonia.Threading;
using Xunit;
namespace Avalonia.Headless.UnitTests;
public class ThreadingTests
{
[Fact]
[AvaloniaFact]
public void Should_Be_On_Dispatcher_Thread()
{
Dispatcher.UIThread.VerifyAccess();
}
[Fact]
public async Task DispatcherTimer_Works_On_The_Same_Thread()
[AvaloniaTheory]
[InlineData(1)]
[InlineData(10)]
[InlineData(100)]
public async Task DispatcherTimer_Works_On_The_Same_Thread(int interval)
{
await Task.Delay(100);
var currentThread = Thread.CurrentThread;
var tcs = new TaskCompletionSource();
var hasCompleted = false;
DispatcherTimer.RunOnce(() =>
{
Assert.Equal(currentThread, Thread.CurrentThread);
hasCompleted = currentThread == Thread.CurrentThread;
tcs.SetResult();
}, TimeSpan.FromTicks(1));
}, TimeSpan.FromTicks(interval));
await tcs.Task;
await tcs.Task;
Assert.True(hasCompleted);
}
}

7
tests/Avalonia.Headless.XUnit.UnitTests/AssemblyInfo.cs

@ -0,0 +1,7 @@
global using Xunit;
global using Avalonia.Headless.XUnit;
using Avalonia.Headless;
using Avalonia.Headless.UnitTests;
using Avalonia.Headless.XUnit;
[assembly: AvaloniaTestApplication(typeof(TestApplication))]

7
tests/Avalonia.Headless.UnitTests/Avalonia.Headless.UnitTests.csproj → tests/Avalonia.Headless.XUnit.UnitTests/Avalonia.Headless.XUnit.UnitTests.csproj

@ -1,9 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<IsTestProject>true</IsTestProject>
<DefineConstants>$(DefineConstants);XUNIT</DefineConstants>
</PropertyGroup>
<Import Project="..\..\build\UnitTests.NetCore.targets" />
<Import Project="..\..\build\UnitTests.NetFX.props" />
<Import Project="..\..\build\Moq.props" />
@ -11,6 +12,10 @@
<Import Project="..\..\build\Rx.props" />
<Import Project="..\..\build\SharedVersion.props" />
<ItemGroup>
<Compile Include="..\Avalonia.Headless.UnitTests\**\*.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Avalonia.Themes.Simple\Avalonia.Themes.Simple.csproj" />
<ProjectReference Include="..\..\src\Headless\Avalonia.Headless.XUnit\Avalonia.Headless.XUnit.csproj" />
Loading…
Cancel
Save