private IUnitTestElement ProcessTestClass(IClass testClass) { if (testClass.IsAbstract) return ProcessAbstractTestClass(testClass); var typeInfo = testClass.AsTypeInfo(); if (!IsValidTestClass(testClass)) return null; XunitTestClassElement testElement; if (!classes.TryGetValue(testClass, out testElement)) { var clrTypeName = testClass.GetClrName(); testElement = unitTestElementFactory.GetOrCreateTestClass(project, clrTypeName, assemblyPath, typeInfo.GetTraits()); classes.Add(testClass, testElement); } if (testElement != null) { foreach (var testMethod in IsInThisFile(testElement.Children)) testMethod.State = UnitTestElementState.Pending; // TODO: I think this might be an edge case with RunWith // We'll add Fact based methods for classes with RunWith + Facts in base classes AppendTests(testElement, typeInfo, testClass.GetAllSuperTypes()); } return testElement; }
private IUnitTestElement ProcessTestClass(IClass testClass) { if (IsAbstractClass(testClass)) { return(ProcessAbstractTestClass(testClass)); } var typeInfo = testClass.AsTypeInfo(); if (!IsValidTestClass(testClass)) { return(null); } XunitTestClassElement testElement; if (!classes.TryGetValue(testClass, out testElement)) { var clrTypeName = testClass.GetClrName(); testElement = unitTestElementFactory.GetOrCreateTestClass(project, clrTypeName, assemblyPath, typeInfo.GetTraits()); classes.Add(testClass, testElement); } if (testElement != null) { foreach (var testMethod in IsInThisFile(testElement.Children)) { testMethod.State = UnitTestElementState.Pending; } AppendTests(testElement, typeInfo, testClass.GetAllSuperTypes()); } return(testElement); }
private IUnitTestElement ProcessTestClass(IClass testClass) { bool isAbstract; if (!IsValidTestClass(testClass, out isAbstract)) return null; if (isAbstract) { ProcessAbstractClass(testClass); return null; } ICollection<XunitTestClassElement> testElements; XunitTestClassElement testElement; if (!classes.TryGetValue(testClass, out testElements)) { testElement = GetOrCreateClassElement(testClass, project, envoy); foreach (var child in ChildrenInThisFile(testElement)) child.State = UnitTestElementState.Pending; classes.Add(testClass, new List<XunitTestClassElement> {testElement}); } else { testElement = testElements.First(); } foreach (IDeclaredType type in testClass.GetAllSuperTypes()) ProcessSuperType(testElement, type); return testElement; }