コード例 #1
0
        private void ExploreTestMethod(IProject project, XunitTestClassElement classUnitTestElement, IUnitTestElementsObserver observer, IMethodInfo methodInfo)
        {
            var methodUnitTestElement = unitTestElementFactory.GetOrCreateTestMethod(project, classUnitTestElement, new ClrTypeName(methodInfo.TypeName), methodInfo.Name,
                                                                                     MethodUtility.GetSkipReason(methodInfo), methodInfo.GetTraits(), false);

            observer.OnUnitTestElement(methodUnitTestElement);
        }
コード例 #2
0
        private void ExploreTestMethod(IProject project, XunitTestClassElement classUnitTestElement, UnitTestElementConsumer consumer, IMethodInfo methodInfo)
        {
            var methodUnitTestElement = unitTestElementFactory.GetOrCreateTestMethod(project, classUnitTestElement, new ClrTypeName(methodInfo.TypeName), methodInfo.Name,
                                                                                     MethodUtility.GetSkipReason(methodInfo), methodInfo.SafelyGetTraits(), false);

            consumer(methodUnitTestElement);
        }
コード例 #3
0
        public static XunitTestMethodElement GetTestMethod(IProject project, XunitTestClassElement classElement, IClrTypeName typeName, string methodName)
        {
            var id = GetTestMethodId(classElement, typeName, methodName);
            var unitTestElementManager = project.GetSolution().GetComponent <IUnitTestElementManager>();

            return(unitTestElementManager.GetElementById(project, id) as XunitTestMethodElement);
        }
コード例 #4
0
        private void AppendTests(XunitTestClassElement classElement, ITypeInfo typeInfo, IEnumerable <IDeclaredType> types)
        {
            foreach (var declaredType in types)
            {
                if (declaredType.GetClrName().Equals(PredefinedType.OBJECT_FQN))
                {
                    continue;
                }

                var typeElement = declaredType.GetTypeElement();
                if (typeElement != null)
                {
                    var methodInfo = new PsiMethodInfoAdapter();
                    foreach (var method in typeElement.GetMembers().OfType <IMethod>())
                    {
                        methodInfo.Reset(method, typeInfo);
                        if (MethodUtility.IsTest(methodInfo))
                        {
                            var element = unitTestElementFactory.GetOrCreateTestMethod(project, classElement,
                                                                                       typeElement.GetClrName(), method.ShortName,
                                                                                       MethodUtility.GetSkipReason(methodInfo), methodInfo.GetTraits(),
                                                                                       false);
                            observer.OnUnitTestElementDisposition(UnitTestElementDisposition.NotYetClear(element));
                        }
                    }
                }
            }
        }
コード例 #5
0
        public XunitTestClassElement GetOrCreateTestClass(string id, IProject project,
                                                          IClrTypeName typeName,
                                                          string assemblyLocation,
                                                          OneToSetMap <string, string> traits)
        {
            lock (lockObject)
            {
                var elementId = services.CreateId(project, id);
                var element   = GetElementById <XunitTestClassElement>(elementId);
                if (element == null)
                {
                    element = new XunitTestClassElement(services, elementId, typeName.GetPersistent(), assemblyLocation);
                    CacheElement(elementId, element);
                }

                element.State = UnitTestElementState.Valid;
                // Assembly location might have changed if someone e.g. switches from debug to release
                element.AssemblyLocation = assemblyLocation;

                services.ElementManager.RemoveElements(element.Children.Where(c => c.State == UnitTestElementState.Invalid).ToSet());

                UpdateCategories(element, traits);

                return(element);
            }
        }
コード例 #6
0
        private static string GetTestMethodId(XunitTestClassElement classElement, IClrTypeName typeName, string methodName)
        {
            var baseTypeName = string.Empty;

            if (!classElement.TypeName.Equals(typeName))
            {
                baseTypeName = typeName.ShortName + ".";
            }

            return(string.Format("{0}.{1}{2}", classElement.Id, baseTypeName, methodName));
        }
コード例 #7
0
        public static XunitTestMethodElement CreateTestMethod(IUnitTestProvider provider, IProject project,
                                                              DeclaredElementProvider declaredElementProvider,
                                                              XunitTestClassElement classElement,
                                                              IClrTypeName typeName, string methodName,
                                                              string skipReason,
                                                              JetHashSet <string> categories,
                                                              bool isDynamic = false)
        {
            var id = GetTestMethodId(classElement, typeName, methodName);

            return(new XunitTestMethodElement(provider, classElement, new ProjectModelElementEnvoy(project),
                                              declaredElementProvider, id, typeName.GetPersistent(), methodName,
                                              skipReason, categories, isDynamic));
        }
コード例 #8
0
 private void PresentClassElement(XunitTestClassElement value, IPresentableItem item, TreeModelNode modelNode, PresentationState state)
 {
     if (IsNodeParentNatural(modelNode, value))
     {
         item.RichText = value.TypeName.ShortName;
     }
     else if (string.IsNullOrEmpty(value.TypeName.GetNamespaceName()))
     {
         item.RichText = value.TypeName.ShortName;
     }
     else
     {
         item.RichText = string.Format("{0}.{1}", value.TypeName.GetNamespaceName(), value.TypeName.ShortName);
     }
 }
コード例 #9
0
        public XunitTestMethodElement GetOrCreateTestMethod(IProject project, XunitTestClassElement testClassElement, IClrTypeName typeName,
                                                            string methodName, string skipReason, MultiValueDictionary <string, string> traits, bool isDynamic)
        {
            var categories = GetCategories(traits);

            var element = GetTestMethod(project, testClassElement, typeName, methodName);

            if (element != null)
            {
                element.State = UnitTestElementState.Valid;
                element.SetCategories(categories);
                return(element);
            }
            return(CreateTestMethod(provider, project, declaredElementProvider, testClassElement, typeName, methodName, skipReason, categories, isDynamic));
        }
コード例 #10
0
        public XunitTestMethodElement GetOrCreateTestMethod(IProject project,
                                                            XunitTestClassElement testClassElement,
                                                            IClrTypeName typeName, string methodName, string skipReason,
                                                            OneToSetMap <string, string> traits, bool isDynamic)
        {
            var baseTypeName = string.Empty;

            if (!testClassElement.TypeName.Equals(typeName))
            {
                baseTypeName = typeName.ShortName + ".";
            }

            var id = string.Format("{0}.{1}{2}", testClassElement.Id.Id, baseTypeName, methodName);

            return(GetOrCreateTestMethod(id, project, testClassElement, typeName, methodName, skipReason, traits,
                                         isDynamic));
        }
コード例 #11
0
        public XunitTestMethodElement(IUnitTestProvider provider, XunitTestClassElement testClass,
                                      ProjectModelElementEnvoy projectModelElementEnvoy,
                                      DeclaredElementProvider declaredElementProvider,
                                      string id, IClrTypeName typeName, string methodName, string skipReason,
                                      JetHashSet <string> categories, bool isDynamic)
            : base(provider, testClass, id, projectModelElementEnvoy, categories)
        {
            this.declaredElementProvider = declaredElementProvider;
            IsDynamic      = isDynamic;
            TypeName       = typeName;
            MethodName     = methodName;
            ExplicitReason = skipReason;

            ShortName = MethodName;

            if (isDynamic)
            {
                SetState(UnitTestElementState.Dynamic);
            }

            presentation = IsTestInParentClass() ? methodName : string.Format("{0}.{1}", TypeName.ShortName, MethodName);
        }
コード例 #12
0
        public XunitTestMethodElement GetOrCreateTestMethod(string id, IProject project,
                                                            XunitTestClassElement testClassElement,
                                                            IClrTypeName typeName, string methodName,
                                                            string skipReason, OneToSetMap <string, string> traits,
                                                            bool isDynamic)
        {
            lock (lockObject)
            {
                var elementId = services.CreateId(project, id);
                var element   = GetElementById <XunitTestMethodElement>(elementId);
                if (element == null)
                {
                    element = new XunitTestMethodElement(services, elementId, typeName, methodName, skipReason, isDynamic);
                    CacheElement(elementId, element);
                }

                element.Parent = testClassElement;
                element.State  = UnitTestElementState.Valid;

                UpdateCategories(element, traits);

                return(element);
            }
        }