Skip to content

Commit 8b49d99

Browse files
committed
Add AcceptanceTestV3.RunForResultsAsync
1 parent 48a01aa commit 8b49d99

File tree

5 files changed

+110
-0
lines changed

5 files changed

+110
-0
lines changed

src/common.tests/AcceptanceTests/AcceptanceTestV3.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Reflection;
55
using System.Threading;
66
using System.Threading.Tasks;
7+
using Xunit.Internal;
78
using Xunit.Runner.Common;
89
using Xunit.Sdk;
910
using Xunit.v3;
@@ -65,4 +66,40 @@ public async Task<List<TMessageType>> RunAsync<TMessageType>(
6566
var results = await RunAsync(types, preEnumerateTheories);
6667
return results.OfType<TMessageType>().ToList();
6768
}
69+
70+
public async Task<List<ITestResultWithDisplayName>> RunForResultsAsync(
71+
Type type,
72+
bool preEnumerateTheories = true)
73+
{
74+
var results = await RunAsync(type, preEnumerateTheories);
75+
return
76+
results
77+
.OfType<_TestResultMessage>()
78+
.Select(result => TestResultFactory(result, results.OfType<_TestStarting>().Where(ts => ts.TestUniqueID == result.TestUniqueID).Single().TestDisplayName))
79+
.WhereNotNull()
80+
.ToList();
81+
}
82+
83+
public async Task<List<TResult>> RunForResultsAsync<TResult>(
84+
Type type,
85+
bool preEnumerateTheories = true)
86+
where TResult : ITestResultWithDisplayName
87+
{
88+
var results = await RunForResultsAsync(type, preEnumerateTheories);
89+
return results.OfType<TResult>().ToList();
90+
}
91+
92+
public static ITestResultWithDisplayName? TestResultFactory(
93+
_TestResultMessage result,
94+
string testDisplayName)
95+
{
96+
if (result is _TestPassed passed)
97+
return new TestPassedWithDisplayName(passed, testDisplayName);
98+
if (result is _TestFailed failed)
99+
return new TestFailedWithDisplayName(failed, testDisplayName);
100+
if (result is _TestSkipped skipped)
101+
return new TestSkippedWithDisplayName(skipped, testDisplayName);
102+
103+
return null;
104+
}
68105
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public interface ITestResultWithDisplayName
2+
{
3+
string TestDisplayName { get; }
4+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using Xunit.v3;
2+
3+
public class TestFailedWithDisplayName : _TestFailed, ITestResultWithDisplayName
4+
{
5+
internal TestFailedWithDisplayName(
6+
_TestFailed testFailed,
7+
string testDisplayName)
8+
{
9+
AssemblyUniqueID = testFailed.AssemblyUniqueID;
10+
Cause = testFailed.Cause;
11+
ExceptionParentIndices = testFailed.ExceptionParentIndices;
12+
ExceptionTypes = testFailed.ExceptionTypes;
13+
ExecutionTime = testFailed.ExecutionTime;
14+
Messages = testFailed.Messages;
15+
Output = testFailed.Output;
16+
StackTraces = testFailed.StackTraces;
17+
TestCaseUniqueID = testFailed.TestCaseUniqueID;
18+
TestClassUniqueID = testFailed.TestClassUniqueID;
19+
TestCollectionUniqueID = testFailed.TestCollectionUniqueID;
20+
TestDisplayName = testDisplayName;
21+
TestMethodUniqueID = testFailed.TestMethodUniqueID;
22+
TestUniqueID = testFailed.TestUniqueID;
23+
}
24+
25+
public string TestDisplayName { get; set; }
26+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using Xunit.v3;
2+
3+
public class TestPassedWithDisplayName : _TestPassed, ITestResultWithDisplayName
4+
{
5+
internal TestPassedWithDisplayName(
6+
_TestPassed testPassed,
7+
string testDisplayName)
8+
{
9+
AssemblyUniqueID = testPassed.AssemblyUniqueID;
10+
ExecutionTime = testPassed.ExecutionTime;
11+
Output = testPassed.Output;
12+
TestCaseUniqueID = testPassed.TestCaseUniqueID;
13+
TestClassUniqueID = testPassed.TestClassUniqueID;
14+
TestCollectionUniqueID = testPassed.TestCollectionUniqueID;
15+
TestDisplayName = testDisplayName;
16+
TestMethodUniqueID = testPassed.TestMethodUniqueID;
17+
TestUniqueID = testPassed.TestUniqueID;
18+
}
19+
20+
public string TestDisplayName { get; set; }
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using Xunit.v3;
2+
3+
public class TestSkippedWithDisplayName : _TestSkipped, ITestResultWithDisplayName
4+
{
5+
internal TestSkippedWithDisplayName(
6+
_TestSkipped testSkipped,
7+
string testDisplayName)
8+
{
9+
AssemblyUniqueID = testSkipped.AssemblyUniqueID;
10+
ExecutionTime = testSkipped.ExecutionTime;
11+
Output = testSkipped.Output;
12+
Reason = testSkipped.Reason;
13+
TestCaseUniqueID = testSkipped.TestCaseUniqueID;
14+
TestClassUniqueID = testSkipped.TestClassUniqueID;
15+
TestCollectionUniqueID = testSkipped.TestCollectionUniqueID;
16+
TestDisplayName = testDisplayName;
17+
TestMethodUniqueID = testSkipped.TestMethodUniqueID;
18+
TestUniqueID = testSkipped.TestUniqueID;
19+
}
20+
21+
public string TestDisplayName { get; set; }
22+
}

0 commit comments

Comments
 (0)