/// <inheritdoc/> protected override bool TryGetConstructorArgument(ConstructorInfo constructor, int index, ParameterInfo parameter, out object argumentValue) { if (parameter.ParameterType == typeof(ITestOutputHelper)) { argumentValue = new TestOutputHelper(); return(true); } return(ClassFixtureMappings.TryGetValue(parameter.ParameterType, out argumentValue) || collectionFixtureMappings.TryGetValue(parameter.ParameterType, out argumentValue)); }
private Func<InvariantRunner, InvariantConfig> Config ( TestOutputHelper output ) { var attr = TestMethod .Method .GetCustomAttributes(typeof(InvariantAttribute)) .First(); var config = new InvariantConfig { MaxNbOfTest = attr.GetNamedArgument<int>("MaxTest") , MaxNbOfFailedTests = attr.GetNamedArgument<int>("MaxFail") , StartSize = attr.GetNamedArgument<int>("StartSize") , EndSize = attr.GetNamedArgument<int>("EndSize") , QuietOnSuccess = attr.GetNamedArgument<bool>("QuietOnSuccess") , Every = attr.GetNamedArgument<bool>("Verbose") ? (n, args) => { output.WriteLine ( Configuration.Verbose.Every(n, args) ); return ""; } : Configuration.Quick.Every , EveryShrink = attr.GetNamedArgument<bool>("Verbose") ? args => { output.WriteLine ( Configuration.Verbose.EveryShrink(args) ); return ""; } : Configuration.Quick.EveryShrink , Replay = attr.GetNamedArgument<StdGen>("StdGen") }; return runner => { config.Runner = runner; return config; }; }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public override async Task<RunSummary> RunAsync #pragma warning restore CS1998 ( IMessageSink diagnosticMessageSink , IMessageBus bus , object[] constructorArguments , ExceptionAggregator aggregator , CancellationTokenSource cancellationTokenSource ) { var summary = new RunSummary(); var test = new XunitTest(this, DisplayName); if (Inv == null) { var msg = "Return Type must be Invariant."; bus.QueueMessage ( new TestFailed(test, 0, null, new Exception(msg)) ); summary.Aggregate(new RunSummary { Total = 1, Failed = 1 }); return summary; } var output = new TestOutputHelper(); var timer = new ExecutionTimer(); output.Initialize(bus, test); bus.QueueMessage(new TestStarting(test)); InvariantResult result; timer.Aggregate(() => result = Inv.Results(Config(output)).First()); var xresult = ToXunitResult(test, result, timer.Total); bus.QueueMessage(xresult.Item1); summary.Aggregate(xresult.Item2); return summary; }