private bool FindTestsForMethodOnAutofacTestClass(ITestMethod testMethod, bool includeSourceInformation, IMessageBus messageBus, ITestFrameworkDiscoveryOptions discoveryOptions) { var factAttributes = testMethod.Method.GetCustomAttributes(typeof(FactAttribute)).ToList(); if (factAttributes.Count > 1) { var message = $"Test method '{testMethod.TestClass.Class.Name}.{testMethod.Method.Name}' has multiple [Fact]-derived attributes"; var testCase = new ExecutionErrorTestCase(DiagnosticMessageSink, TestMethodDisplay.ClassAndMethod, TestMethodDisplayOptions.All, testMethod, message); return(ReportDiscoveredTestCase(testCase, includeSourceInformation, messageBus)); } var factAttribute = factAttributes.FirstOrDefault(); if (factAttribute == null) { return(true); } var factAttributeType = (factAttribute as IReflectionAttributeInfo)?.Attribute.GetType(); IXunitTestCaseDiscoverer discoverer = null; if (factAttributeType == typeof(FactAttribute)) { discoverer = _autofacFactDiscoverer; } else if (factAttributeType == typeof(TheoryAttribute)) { discoverer = _autofacTheoryDiscoverer; } if (discoverer == null) { return(true); } foreach (var testCase in discoverer.Discover(discoveryOptions, testMethod, factAttribute)) { if (!ReportDiscoveredTestCase(testCase, includeSourceInformation, messageBus)) { return(false); } } return(true); }
public IEnumerable <IXunitTestCase> Discover(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, IAttributeInfo factAttribute) { if (CollectionId.HasValue) { testMethod = WrapTestMethod(testMethod, CollectionId.Value); } if (!Process.GetCurrentProcess().ProcessName.Equals(Path.GetFileNameWithoutExtension(_ExePath), StringComparison.OrdinalIgnoreCase)) { yield return(new XUnitRemoteTestCase(_DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), testMethod, _Id, _ExePath)); } else { foreach (var testCase in _DefaultTestCaseDiscoverer.Discover(discoveryOptions, testMethod, factAttribute)) { yield return(_TestCaseConverter(testCase)); } } }