public bool Assert <T>(T left, T right) { var equal = left.Equals(right); if (!equal) { _messageSink.LogError($"Expected {left}, but was {right}"); } else { _messageSink.LogInfo($"Values were both {left}"); } return(equal); }
public static IEnumerable <MethodInfo> EnumerateTestMethods(this string source, IEnumerable <ITestFeature> features, ITestMessageSink messageSink) { var methods = new HashSet <MethodInfo>(); if (ShouldIgnoreAssembly(source)) { return(methods); } try { var assembly = Assembly.LoadFile(source); if (assembly == typeof(TestKitchenTestDiscoverer).Assembly) { return(methods); } if (assembly.IsDynamic) { return(methods); } messageSink.LogInfo($"Probing source: {source}"); foreach (var feature in features) { foreach (var method in feature.EnumerateTestMethods(assembly, messageSink)) { methods.Add(method); } } } catch (Exception e) { messageSink.LogError(e.ToString()); throw; } return(methods); }
public IEnumerable <MethodInfo> EnumerateTestMethods(Assembly assembly, ITestMessageSink messageSink) { if (!_assemblyFilterConvention.IsValidTestAssembly(assembly)) { yield break; } var visited = new HashSet <Type>(); var types = assembly.GetTypes(); foreach (var type in types.OrderByDescending(t => t.IsAbstract)) { if (visited.Contains(type)) { continue; } visited.Add(type); if (!_testClassFilterConvention.IsValidTestClass(type)) { continue; } var methods = type.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance); foreach (var method in methods) { if (method.DeclaringType == typeof(object)) { continue; } if (!_testMethodFilterConvention.IsValidTestMethod(type, method)) { continue; } messageSink?.LogInfo($"Found test: {type.FullName}.{method.Name}"); yield return(method); } } }