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 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(); }
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()); }