Skip to content

Commit ccc9a51

Browse files
authored
test: more netfull validations (#170)
1 parent b0c619a commit ccc9a51

File tree

8 files changed

+221
-0
lines changed

8 files changed

+221
-0
lines changed

test/JUnit.Xml.TestLogger.AcceptanceTests/JUnitTestLoggerNetFullAcceptanceTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
namespace JUnit.Xml.TestLogger.AcceptanceTests
55
{
66
using System.IO;
7+
using System.Linq;
78
using System.Runtime.InteropServices;
89
using System.Xml.Linq;
10+
using System.Xml.XPath;
911
using global::TestLogger.Fixtures;
1012
using Microsoft.VisualStudio.TestTools.UnitTesting;
1113

@@ -55,6 +57,11 @@ public void NetFullLoggedXmlValidatesAgainstXsdSchema()
5557
var validator = new JunitXmlValidator();
5658
var result = validator.IsValid(File.ReadAllText(this.resultsFile));
5759
Assert.IsTrue(result);
60+
61+
var resultsXml = XDocument.Load(this.resultsFile);
62+
var node = resultsXml.XPathSelectElements("/testsuites/testsuite").Descendants();
63+
var testcases = node.Where(x => x.Name.LocalName == "testcase").ToList();
64+
Assert.IsTrue(testcases.Any());
5865
}
5966
}
6067
}

test/NUnit.Xml.TestLogger.AcceptanceTests/NUnit.Xml.TestLogger.AcceptanceTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
<!-- Build test assets for acceptance tests -->
2525
<ItemGroup>
26+
<TestAssets Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="$(MSBuildThisFileDirectory)../assets/NUnit.Xml.TestLogger.NetFull.Tests/NUnit.Xml.TestLogger.NetFull.Tests.csproj" />
2627
<TestAssets Include="$(MSBuildThisFileDirectory)../assets/NUnit.Xml.TestLogger.NetCore.Tests/NUnit.Xml.TestLogger.NetCore.Tests.csproj" />
2728
<TestAssets Include="$(MSBuildThisFileDirectory)../assets/NUnit.Xml.TestLogger.NetMulti.Tests/NUnit.Xml.TestLogger.NetMulti.Tests.csproj" />
2829
</ItemGroup>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Copyright (c) Spekt Contributors. All rights reserved.
2+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
3+
4+
namespace NUnit.Xml.TestLogger.AcceptanceTests
5+
{
6+
using System;
7+
using System.IO;
8+
using System.Runtime.InteropServices;
9+
using System.Xml.Linq;
10+
using System.Xml.XPath;
11+
using global::TestLogger.Fixtures;
12+
using Microsoft.VisualStudio.TestTools.UnitTesting;
13+
14+
/// <summary>
15+
/// Acceptance tests evaluate the most recent output of the build.ps1 script, NOT the most
16+
/// recent build performed by visual studio or dotnet.build
17+
///
18+
/// These acceptance tests look at the specific structure and contents of the produced Xml,
19+
/// when running using the xUnit vstest runner.
20+
/// </summary>
21+
[TestClass]
22+
public class NUnitTestLoggerNetFullAcceptanceTests
23+
{
24+
private const string AssetName = "NUnit.Xml.TestLogger.NetFull.Tests";
25+
private readonly string resultsFile;
26+
27+
public NUnitTestLoggerNetFullAcceptanceTests()
28+
{
29+
this.resultsFile = Path.Combine(AssetName.ToAssetDirectoryPath(), "test-results.xml");
30+
}
31+
32+
[ClassInitialize]
33+
public static void SuiteInitialize(TestContext context)
34+
{
35+
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
36+
{
37+
return;
38+
}
39+
40+
var loggerArgs = "nunit;LogFilePath=test-results.xml";
41+
42+
// Enable reporting of internal properties in the adapter using runsettings
43+
_ = DotnetTestFixture
44+
.Create()
45+
.WithBuild()
46+
.Execute(AssetName, loggerArgs, collectCoverage: false, "test-results.xml");
47+
}
48+
49+
[TestMethod]
50+
public void NetFullTestsAreRun()
51+
{
52+
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
53+
{
54+
return;
55+
}
56+
57+
var resultsXml = XDocument.Load(this.resultsFile);
58+
59+
var node = resultsXml.XPathSelectElement("/test-run/test-suite[@type='Assembly']");
60+
Assert.IsNotNull(node);
61+
Assert.IsTrue(Convert.ToInt32(node.Attribute(XName.Get("total")).Value) > 0);
62+
Assert.IsTrue(Convert.ToInt32(node.Attribute(XName.Get("passed")).Value) > 0);
63+
}
64+
}
65+
}

test/Xunit.Xml.TestLogger.AcceptanceTests/Xunit.Xml.TestLogger.AcceptanceTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
<!-- Build test assets for acceptance tests -->
2929
<ItemGroup>
30+
<TestAssets Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="$(MSBuildThisFileDirectory)../assets/Xunit.Xml.TestLogger.NetFull.Tests/Xunit.Xml.TestLogger.NetFull.Tests.csproj" />
3031
<TestAssets Include="$(MSBuildThisFileDirectory)../assets/Xunit.Xml.TestLogger.NetCore.Tests/Xunit.Xml.TestLogger.NetCore.Tests.csproj" />
3132
</ItemGroup>
3233
<Target Name="TestTarget" BeforeTargets="Build">
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// Copyright (c) Spekt Contributors. All rights reserved.
2+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
3+
4+
namespace Xunit.Xml.TestLogger.AcceptanceTests
5+
{
6+
using System;
7+
using System.IO;
8+
using System.Runtime.InteropServices;
9+
using System.Xml.Linq;
10+
using System.Xml.XPath;
11+
using global::TestLogger.Fixtures;
12+
using Microsoft.VisualStudio.TestTools.UnitTesting;
13+
14+
/// <summary>
15+
/// Acceptance tests evaluate the most recent output of the build.ps1 script, NOT the most
16+
/// recent build performed by visual studio or dotnet.build
17+
///
18+
/// These acceptance tests look at the specific structure and contents of the produced Xml,
19+
/// when running using the xUnit vstest runner.
20+
/// </summary>
21+
[TestClass]
22+
public class XunitTestLoggerNetFullAcceptanceTests
23+
{
24+
private const string AssetName = "Xunit.Xml.TestLogger.NetFull.Tests";
25+
private readonly string resultsFile;
26+
27+
public XunitTestLoggerNetFullAcceptanceTests()
28+
{
29+
this.resultsFile = Path.Combine(AssetName.ToAssetDirectoryPath(), "test-results.xml");
30+
}
31+
32+
[ClassInitialize]
33+
public static void SuiteInitialize(TestContext context)
34+
{
35+
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
36+
{
37+
return;
38+
}
39+
40+
var loggerArgs = "xunit;LogFilePath=test-results.xml";
41+
42+
// Enable reporting of internal properties in the adapter using runsettings
43+
_ = DotnetTestFixture
44+
.Create()
45+
.WithBuild()
46+
.Execute(AssetName, loggerArgs, collectCoverage: false, "test-results.xml");
47+
}
48+
49+
[TestMethod]
50+
public void NetFullTestsAreRun()
51+
{
52+
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
53+
{
54+
return;
55+
}
56+
57+
var resultsXml = XDocument.Load(this.resultsFile);
58+
59+
var node = resultsXml.XPathSelectElement(@"/assemblies/assembly");
60+
Assert.IsNotNull(node);
61+
Assert.IsTrue(Convert.ToInt32(node.Attribute(XName.Get("total")).Value) > 0);
62+
}
63+
}
64+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net472</TargetFramework>
5+
<FrameworkPathOverride Condition="'$(OS)' != 'Windows_NT'">/usr/lib/mono/4.5/</FrameworkPathOverride>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<ProjectReference Include="../../../src/NUnit.Xml.TestLogger/NUnit.Xml.TestLogger.csproj" />
10+
</ItemGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(NETTestSdkMinimumVersion)" />
14+
<PackageReference Include="NUnit" Version="$(NUnitVersion)" />
15+
<PackageReference Include="NUnit3TestAdapter" Version="$(NUnitTestAdapterVersion)" />
16+
</ItemGroup>
17+
18+
<ItemGroup>
19+
<Compile Include="..\NUnit.Xml.TestLogger.NetCore.Tests\UnitTest1.cs">
20+
<Link>UnitTest1.cs</Link>
21+
</Compile>
22+
<Compile Include="..\NUnit.Xml.TestLogger.NetCore.Tests\UnitTest2.cs">
23+
<Link>UnitTest2.cs</Link>
24+
</Compile>
25+
</ItemGroup>
26+
27+
</Project>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using System;
2+
using Xunit;
3+
4+
namespace Xunit.Xml.TestLogger.NetFull.Tests
5+
{
6+
public class UnitTest1
7+
{
8+
[Fact]
9+
public void PassTest11()
10+
{
11+
}
12+
13+
[Fact]
14+
public void FailTest11()
15+
{
16+
Assert.False(true);
17+
}
18+
}
19+
20+
public class UnitTest2
21+
{
22+
[Fact]
23+
public void PAssTest21()
24+
{
25+
Assert.Equal(2, 2);
26+
}
27+
28+
[Fact]
29+
public void FailTest22()
30+
{
31+
Assert.False(true);
32+
}
33+
}
34+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net472</TargetFramework>
5+
<FrameworkPathOverride Condition="'$(OS)' != 'Windows_NT'">/usr/lib/mono/4.5/</FrameworkPathOverride>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<ProjectReference Include="../../../src/Xunit.Xml.TestLogger/Xunit.Xml.TestLogger.csproj" />
10+
</ItemGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
14+
<PackageReference Include="xunit" Version="2.2.0" />
15+
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
16+
</ItemGroup>
17+
18+
<ItemGroup>
19+
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
20+
</ItemGroup>
21+
22+
</Project>

0 commit comments

Comments
 (0)