public UnitTestInfo[] GetTests(TestAssemblyInfo assemblyInfo)
        {
            List <string> assmRefs = new List <string>();

            foreach (var assmName in assemblyInfo.Assembly.GetReferencedAssemblies())
            {
                assmRefs.Add(assmName.Name);
            }

            UnitTestInfo[] tests = null;

            MethodInfo entryInfo = assemblyInfo.Assembly.EntryPoint;

            if (entryInfo != null)
            {
                UnitTestInfo test = new UnitTestInfo()
                {
                    AssemblyPath  = assemblyInfo.Assembly.Location,
                    ReferenceInfo = assemblyInfo.ReferenceInfo,
                    Class         = new TestClassInfo {
                        FullName = entryInfo.DeclaringType.FullName, IsAbstract = entryInfo.DeclaringType.IsAbstract, IsGenericType = entryInfo.DeclaringType.IsGenericType, IsPublic = entryInfo.DeclaringType.IsPublic
                    },
                    Method = new TestMethodInfo {
                        Name = entryInfo.Name, IsAbstract = entryInfo.IsAbstract, IsGenericMethodDefinition = entryInfo.IsGenericMethodDefinition, IsPublic = entryInfo.IsPublic, IsStatic = entryInfo.IsStatic
                    },
                };

                tests = new UnitTestInfo[] { test };
            }

            return(tests ?? new UnitTestInfo[] { });
        }
Example #2
0
        public bool Load(string assemblyPath, string[] hintPaths)
        {
            this.AssemblyPath = assemblyPath;

            this.HintPaths = hintPaths;

            this.LoadError = null;

            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += IsoDomain_ReflectionOnlyAssemblyResolve;

            try
            {
                _assembly = new TestAssemblyInfo()
                {
                    Assembly = Assembly.ReflectionOnlyLoadFrom(this.AssemblyPath), ReferenceInfo = new TestReferenceInfo(), PackageInfo = LoadPackageRefs(this.AssemblyPath)
                };

                foreach (var refName in _assembly.Assembly.GetReferencedAssemblies())
                {
                    this.AddTestReferenceAssembly(refName);
                }
            }
            catch (Exception e)
            {
                this.LoadError = e.ToString();
            }

            return(this.LoadError == null);
        }
        public UnitTestInfo[] GetTests(TestAssemblyInfo assemblyInfo)
        {
            List<string> assmRefs = new List<string>();

            foreach (var assmName in assemblyInfo.Assembly.GetReferencedAssemblies())
            {
                assmRefs.Add(assmName.Name);
            }

            UnitTestInfo[] tests = null;

            MethodInfo entryInfo = assemblyInfo.Assembly.EntryPoint;

            if (entryInfo != null)
            {
                UnitTestInfo test = new UnitTestInfo()
                {
                    AssemblyPath = assemblyInfo.Assembly.Location,
                    ReferenceInfo = assemblyInfo.ReferenceInfo,
                    Class = new TestClassInfo { FullName = entryInfo.DeclaringType.FullName, IsAbstract = entryInfo.DeclaringType.IsAbstract, IsGenericType = entryInfo.DeclaringType.IsGenericType, IsPublic = entryInfo.DeclaringType.IsPublic },
                    Method = new TestMethodInfo { Name = entryInfo.Name, IsAbstract = entryInfo.IsAbstract, IsGenericMethodDefinition = entryInfo.IsGenericMethodDefinition, IsPublic = entryInfo.IsPublic, IsStatic = entryInfo.IsStatic },
                };

                tests = new UnitTestInfo[] { test };
            }

            return tests ?? new UnitTestInfo[] { };
        }
        public UnitTestInfo[] GetTests(TestAssemblyInfo assemblyInfo)
        {
            _assemblyInfo = assemblyInfo;

            List <string> assmRefs = new List <string>();

            foreach (var refAssm in assemblyInfo.Assembly.GetReferencedAssemblies().Select(name => name.Name).Where(name => !name.StartsWith("System")))
            {
                assmRefs.Add(refAssm);
            }

            List <UnitTestInfo> tests = new List <UnitTestInfo>();

            if (assemblyInfo != null)
            {
                foreach (var assmClass in assemblyInfo.Assembly.GetTypes())
                {
                    foreach (var method in assmClass.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))
                    {
                        var attributes = method.GetCustomAttributesData();

                        var testAttr = attributes.FirstOrDefault(attr => attr.AttributeType.Name == "FactAttribute" || attr.AttributeType.Name == "TheoryAttribute");

                        if (testAttr != null)
                        {
                            UnitTestInfo test = new UnitTestInfo()
                            {
                                AssemblyPath         = assemblyInfo.Assembly.Location,
                                AssemblyLastModified = File.GetLastWriteTime(assemblyInfo.Assembly.Location),
                                ReferenceInfo        = assemblyInfo.ReferenceInfo,
                                Class = new TestClassInfo
                                {
                                    FullName       = assmClass.FullName,
                                    IsAbstract     = assmClass.IsAbstract,
                                    IsGenericType  = assmClass.IsGenericType || assmClass.IsGenericTypeDefinition,
                                    IsPublic       = assmClass.IsPublic,
                                    HasDefaultCtor = assmClass.GetConstructor(Type.EmptyTypes) != null
                                },
                                Method = new TestMethodInfo
                                {
                                    Name       = method.Name,
                                    IsAbstract = method.IsAbstract,
                                    IsGenericMethodDefinition = method.IsGenericMethodDefinition,
                                    IsPublic     = method.IsPublic,
                                    IsStatic     = method.IsStatic,
                                    IsTaskReturn = method.ReturnType.FullName.StartsWith(typeof(Task).FullName),
                                },
                                ArgumentInfo = GetTestArgumentInfo(method, attributes),
                            };

                            tests.Add(test);
                        }
                    }
                }
            }

            return(tests.ToArray());
        }
        public UnitTestInfo[] GetTests(TestAssemblyInfo assemblyInfo)
        {
            _assemblyInfo = assemblyInfo;

            List<string> assmRefs = new List<string>();

            foreach (var refAssm in assemblyInfo.Assembly.GetReferencedAssemblies().Select(name => name.Name).Where(name => !name.StartsWith("System")))
            {
                assmRefs.Add(refAssm);
            }

            List<UnitTestInfo> tests = new List<UnitTestInfo>();

            if (assemblyInfo != null)
            {
                foreach (var assmClass in assemblyInfo.Assembly.GetTypes())
                {
                    foreach (var method in assmClass.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))
                    {
                        var attributes = method.GetCustomAttributesData();

                        var testAttr = attributes.FirstOrDefault(attr => attr.AttributeType.Name == "FactAttribute" || attr.AttributeType.Name == "TheoryAttribute");

                        if (testAttr != null)
                        {
                            UnitTestInfo test = new UnitTestInfo()
                            {
                                AssemblyPath = assemblyInfo.Assembly.Location,
                                AssemblyLastModified = File.GetLastWriteTime(assemblyInfo.Assembly.Location),
                                ReferenceInfo = assemblyInfo.ReferenceInfo,
                                Class = new TestClassInfo
                                {
                                    FullName = assmClass.FullName,
                                    IsAbstract = assmClass.IsAbstract,
                                    IsGenericType = assmClass.IsGenericType || assmClass.IsGenericTypeDefinition,
                                    IsPublic = assmClass.IsPublic,
                                    HasDefaultCtor = assmClass.GetConstructor(Type.EmptyTypes) != null
                                },
                                Method = new TestMethodInfo
                                {
                                    Name = method.Name,
                                    IsAbstract = method.IsAbstract,
                                    IsGenericMethodDefinition = method.IsGenericMethodDefinition,
                                    IsPublic = method.IsPublic,
                                    IsStatic = method.IsStatic,
                                    IsTaskReturn = method.ReturnType.FullName.StartsWith(typeof(Task).FullName),
                                },
                                ArgumentInfo = GetTestArgumentInfo(method, attributes),
                            };

                            tests.Add(test);
                        }
                    }
                }
            }

            return tests.ToArray();
        }
        public UnitTestInfo[] GetTests(TestAssemblyInfo assemblyInfo)
        {
            List<string> assmRefs = new List<string>();

            foreach (var refAssm in assemblyInfo.Assembly.GetReferencedAssemblies().Select(name => name.Name).Where(name => !name.StartsWith("System")))
            {
                assmRefs.Add(refAssm);
            }

            List<UnitTestInfo> tests = new List<UnitTestInfo>();

            if (assemblyInfo != null)
            {
                foreach (var assmClass in assemblyInfo.Assembly.GetTypes())
                {
                    foreach (var method in assmClass.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))
                    {
                        var attributes = method.GetCustomAttributesData();

                        if (attributes.Any(attr => attr.AttributeType.Name == "FactAttribute" || attr.AttributeType.Name == "TestMethodAttribute"))
                        {
                            UnitTestInfo test = new UnitTestInfo()
                            {
                                AssemblyPath = assemblyInfo.Assembly.Location,
                                ReferenceInfo = assemblyInfo.ReferenceInfo,
                                Class = new TestClassInfo { FullName = assmClass.FullName, IsAbstract = assmClass.IsAbstract, IsGenericType = assmClass.IsGenericType || assmClass.IsGenericTypeDefinition, IsPublic = assmClass.IsPublic, HasDefaultCtor = assmClass.GetConstructor(Type.EmptyTypes) != null },
                                Method = new TestMethodInfo { Name = method.Name, IsAbstract = method.IsAbstract, IsGenericMethodDefinition = method.IsGenericMethodDefinition, IsPublic = method.IsPublic, IsStatic = method.IsStatic, IsVoidReturn = method.ReturnType.Name.ToLowerInvariant() == "void" },
                            };

                            tests.Add(test);
                        }
                    }
                }
            }

            return tests.ToArray();
        }
Example #7
0
        public UnitTestInfo[] GetTests(TestAssemblyInfo assemblyInfo)
        {
            _assemblyInfo = assemblyInfo;

            List <string> assmRefs = new List <string>();

            foreach (var refAssm in assemblyInfo.Assembly.GetReferencedAssemblies().Select(name => name.Name).Where(name => !name.StartsWith("System")))
            {
                assmRefs.Add(refAssm);
            }

            List <UnitTestInfo> tests = new List <UnitTestInfo>();

            if (assemblyInfo != null)
            {
                try
                {
                    var explExcluded = assemblyInfo.Assembly.GetCustomAttributesData().FirstOrDefault(attrData => attrData.AttributeType.Name == "AssemblyTraitAttribute" &&
                                                                                                      attrData.ConstructorArguments.Count == 2 &&
                                                                                                      attrData.ConstructorArguments[0].Value as string == "StressCategory" &&
                                                                                                      attrData.ConstructorArguments[1].Value as string == "Excluded") != null;
                    foreach (var assmClass in assemblyInfo.Assembly.GetTypes())
                    {
                        foreach (var method in assmClass.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))
                        {
                            var attributes = method.GetCustomAttributesData();

                            var testAttr = attributes.FirstOrDefault(attr => attr.AttributeType.Name == "FactAttribute" || attr.AttributeType.Name == "TheoryAttribute");

                            if (testAttr != null)
                            {
                                UnitTestInfo test = new UnitTestInfo()
                                {
                                    AssemblyPath         = assemblyInfo.Assembly.Location,
                                    AssemblyLastModified = File.GetLastWriteTime(assemblyInfo.Assembly.Location),
                                    ReferenceInfo        = assemblyInfo.ReferenceInfo,
                                    Class = new TestClassInfo
                                    {
                                        FullName       = assmClass.FullName,
                                        IsAbstract     = assmClass.IsAbstract,
                                        IsGenericType  = assmClass.IsGenericType || assmClass.IsGenericTypeDefinition,
                                        IsPublic       = assmClass.IsPublic,
                                        HasDefaultCtor = assmClass.GetConstructor(Type.EmptyTypes) != null
                                    },
                                    Method = new TestMethodInfo
                                    {
                                        Name       = method.Name,
                                        IsAbstract = method.IsAbstract,
                                        IsGenericMethodDefinition = method.IsGenericMethodDefinition,
                                        IsPublic           = method.IsPublic,
                                        IsStatic           = method.IsStatic,
                                        IsTaskReturn       = method.ReturnType.FullName.StartsWith(typeof(Task).FullName),
                                        ExplicitlyExcluded = explExcluded,
                                    },
                                    ArgumentInfo = GetTestArgumentInfo(method, attributes),
                                };

                                tests.Add(test);
                            }
                        }
                    }
                }
                catch (ReflectionTypeLoadException typeException)
                {
                    Console.WriteLine($"Type loading exception: {typeException.Message}\r\nLoader Exceptions:\r\n\t{string.Join("\r\n", typeException.LoaderExceptions.Select(x => x.Message))}");
                }
            }

            return(tests.ToArray());
        }