-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.cs
105 lines (85 loc) · 4.03 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Faultify.MemoryTest.NUnit;
using Faultify.MemoryTest.TestInformation;
using Faultify.MemoryTest.XUnit;
namespace Faultify.MemoryTest.Console
{
internal class Program
{
private static string _impersonationResolverPath = "";
private static readonly StringBuilder Sb = new StringBuilder();
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
// Ignore missing resources
if (args.Name.Contains(".resources"))
return null;
// check for assemblies already loaded
var assembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a => a.FullName == args.Name);
if (assembly != null)
return assembly;
// Try to load by filename - split out the filename of the full assembly name
// and append the base path of the original assembly (ie. look in the same dir)
var filename = args.Name.Split(',')[0] + ".dll".ToLower();
var asmFile = Path.Combine(_impersonationResolverPath, filename);
try
{
return Assembly.LoadFrom(asmFile);
}
catch (Exception ex)
{
return null;
}
}
private static async Task Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
_impersonationResolverPath =
@"E:\programming\FaultifyNew\Faultify\Benchmark\Faultify.Benchmark.XUnit\bin\Debug\netcoreapp3.1\";
var xunitHostRunner =
new XUnitTestHostRunner(
@"E:\programming\FaultifyNew\Faultify\Benchmark\Faultify.Benchmark.XUnit\bin\Debug\netcoreapp3.1\Faultify.Benchmark.XUnit.dll");
xunitHostRunner.TestStart += OnTestStart;
xunitHostRunner.TestEnd += OnTestEnd;
xunitHostRunner.TestSessionStart += OnTestSessionStart;
xunitHostRunner.TestSessionEnd += OnTestSessionEnd;
xunitHostRunner.RunTestsAsync(CancellationToken.None).Wait();
System.Console.WriteLine(xunitHostRunner.Output.ToString());
System.Console.WriteLine(xunitHostRunner.Error.ToString());
_impersonationResolverPath =
@"E:\programming\FaultifyNew\Faultify\Benchmark\Faultify.Benchmark.NUnit\bin\Debug\netcoreapp3.1\";
var nunitHostRunner =
new NUnitTestHostRunner(
@"E:\programming\FaultifyNew\Faultify\Benchmark\Faultify.Benchmark.NUnit\bin\Debug\netcoreapp3.1\Faultify.Benchmark.NUnit.dll");
nunitHostRunner.TestStart += OnTestStart;
nunitHostRunner.TestEnd += OnTestEnd;
nunitHostRunner.TestSessionStart += OnTestSessionStart;
nunitHostRunner.TestSessionEnd += OnTestSessionEnd;
nunitHostRunner.RunTestsAsync(CancellationToken.None).Wait();
System.Console.WriteLine(Sb.ToString());
}
private static void OnTestSessionStart(object? sender, TestSessionStart e)
{
Sb.AppendLine($"\n\n==== Test session start [{e.StartTime:hh:mm:ss t z}] ====");
}
private static void OnTestSessionEnd(object? sender, TestSessionEnd e)
{
Sb.AppendLine(
$"==== Test session end [{e.EndTime:hh:mm:ss t z}]: Passed: {e.Passed}, Failed: {e.FailedTests}, Skipped: {e.Skipped}, Run Result: {e.TestOutcome} ====\t");
}
private static void OnTestEnd(object? sender, TestEnd e)
{
Sb.AppendLine(
$"[{e.TestOutcome}] Test Finish [{e.StartTime:hh:mm:ss t z}/{e.EndTime:hh:mm:ss t z}]: {e.TypeName} | {e.TestName}");
}
private static void OnTestStart(object? sender, TestStart e)
{
Sb.AppendLine($"Test case start: {e.TypeName} | {e.TestName}");
}
}
}