public void AllNamespacesStartWithGetcuReoneTestCase() { string beginNamespace = "GetcuReone"; string partNameAssemblies = _projectName; string[] excludeAssemblies = new string[] { }; Given("Get all file", () => InfrastructureHelper.GetAllFiles(_solutionFolder)) .And("Get all assemblies", files => files.Where(file => file.Name.Contains(".dll"))) .And($"Includ only {partNameAssemblies} assemblies", files => files.Where(file => file.Name.Contains(partNameAssemblies))) .And($"Include only library assemlies", files => files .Where(file => file.FullName.Contains("Tests") && !file.Name.Contains("Tests.dll") && !file.Name.Contains("TestAdapter.dll") && !file.FullName.Contains("obj") && (file.Directory.Parent.Name.Contains(_buildConfiguration) || file.Directory.Name.Contains(_buildConfiguration)) && excludeAssemblies.All(ass => ass != file.Name))) .And($"Exclude duplicate", files => files .DistinctByFunc((x, y) => x.Name == y.Name) .ToList()) .And("Get assembly infos", files => files.Select(file => { LoggingHelper.ConsoleInfo($"test assembly {file.FullName}"); return(Assembly.LoadFrom(file.FullName)); }).ToList()) .When("Get types", assemblies => assemblies.SelectMany(assembly => assembly.GetTypes())) .Then("Check types", types => { var invalidTypes = new List <Type>(); foreach (Type type in types) { if (type.FullName.Length <= beginNamespace.Length) { invalidTypes.Add(type); } else if (!type.FullName.Substring(0, beginNamespace.Length).Equals(beginNamespace, StringComparison.Ordinal)) { invalidTypes.Add(type); } } if (invalidTypes.Count != 0) { Assert.Fail($"Invalid types: \n{string.Join("\n", invalidTypes.ConvertAll(type => type.FullName))}"); } }) .Run(); }
public void AssembliesHaveMajorVersionTestCase() { string[] includeAssemblies = new string[] { Path.Combine("NugetProject", "bin", _buildConfiguration, "netstandard2.0", "NugetProject.dll"), Path.Combine("JwtTestAdapter", "bin", _buildConfiguration, "netstandard2.0", "JwtTestAdapter.dll"), }; string majorVersion = Environment.GetEnvironmentVariable("majorVersion"); string excpectedAssemblyVersion = majorVersion != null ? $"{majorVersion}.0.0.0" : "1.0.0.0"; string partNameAssemblies = "FactFactory"; Given("Get all file", () => InfrastructureHelper.GetAllFiles(new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.Parent.Parent.Parent)) .And("Get all assemblies", files => files.Where(file => file.Name.Contains(".dll"))) .And($"Includ only {partNameAssemblies} assemblies", files => files.Where(file => file.Name.Contains(partNameAssemblies) || includeAssemblies.Any(inAss => file.FullName.Contains(inAss)))) .And($"Include only library assemlies", files => files .Where(file => !file.FullName.Contains("TestAdapter.dll") && !file.FullName.Contains("obj") && file.FullName.Contains(_buildConfiguration))) .And($"Exclude duplicate", files => files .DistinctByFunc((x, y) => x.Name == y.Name) .ToList()) .When("Get assembly infos", files => files.Select(file => { LoggingHelper.Info($"test assembly {file.FullName}"); return(Assembly.LoadFrom(file.FullName)); }).ToList()) .Then("Checke assembly version", assemblies => { var invalidAssemblies = new List <Assembly>(); foreach (Assembly assembly in assemblies) { if (!assembly.FullName.Contains($"Version={excpectedAssemblyVersion}")) { invalidAssemblies.Add(assembly); } CustomAttributeData attr = assembly.CustomAttributes.SingleOrDefault(attr => attr.AttributeType.Name.Equals(nameof(AssemblyFileVersionAttribute), StringComparison.Ordinal)); if (attr == null || attr.ConstructorArguments.Count == 0 || attr.ConstructorArguments[0].Value == null) { invalidAssemblies.Add(assembly); } else if (!(attr.ConstructorArguments[0].Value is string attrStr)) { invalidAssemblies.Add(assembly); }
public void AllHaveTimeoutTestCase() { string partNameAssemblies = "MvvmFrame.Wpf"; Given("Get all file", () => InfrastructureHelper.GetAllFiles(_solutionFolder)) .And("Get all assemblies", files => files.Where(file => file.Name.Contains(".dll"))) .And($"Includ only {partNameAssemblies} assemblies", files => files.Where(file => file.Name.Contains(partNameAssemblies))) .And($"Include only tests assemlies", files => files .Where(file => file.Name.Contains("Tests.dll") && !file.FullName.Contains("TestAdapter.dll") && !file.FullName.Contains("obj") && file.FullName.Contains(_buildConfiguration)) .ToList()) .And("Get assembly infos", files => files.Select(file => { LoggingHelper.Info($"test assembly {file.FullName}"); return(Assembly.LoadFrom(file.FullName)); }).ToList()) .And("Get types", assemblies => assemblies.SelectMany(assembly => assembly.GetTypes())) .And("Get test classes", types => types.Where(type => type.GetCustomAttribute(typeof(TestClassAttribute)) != null)) .When("Get test methods", typeClasses => { var result = new List <MemberInfo>(); foreach (var cl in typeClasses) { foreach (var method in cl.GetMethods().Where(method => method.GetCustomAttribute(typeof(TestMethodAttribute)) != null)) { result.Add(method); LoggingHelper.Info($"test method {cl.FullName}.{method.Name}()"); } } return(result); }) .Then("Check timeouts", methods => { List <MemberInfo> invalidMethods = methods.Where(method => method.GetCustomAttribute(typeof(TestMethodAttribute)) == null).ToList(); if (invalidMethods.Count != 0) { Assert.Fail("Methods dont have TestMethodAttribute:\n" + string.Join("\n", invalidMethods.Select(method => $"{method.DeclaringType.FullName}.{method.Name}"))); } }); }