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;
        }
Пример #2
0
        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;
        }