public TestCase (TestFixture fixture, AsyncTestAttribute attr, MethodInfo method) { this.Fixture = fixture; this.Attribute = attr; this.Method = method; this.Name = method.Name; IDictionary<Type, TestCategoryAttribute> categories; IList<TestWarning> warnings; TestFixture.Resolve ( fixture.Suite, fixture, method, out categories, out warnings, out config, out disabled); Categories = categories.Values.ToList ().AsReadOnly (); Warnings = warnings; }
internal static void Resolve ( TestSuite suite, TestFixture parent, MemberInfo member, out IDictionary<Type, TestCategoryAttribute> categories, out IList<TestWarning> warnings, out TestConfiguration config, out bool disabled) { disabled = false; config = null; bool hasConfig = false; warnings = new List<TestWarning> (); categories = new Dictionary<Type, TestCategoryAttribute> (); if (parent != null) { config = parent.Configuration; hasConfig = config != null; foreach (var category in parent.Categories) categories [category.GetType ()] = category; } string fullName; if (member is Type) fullName = ((Type)member).FullName; else if (member is MethodInfo) { var method = (MethodInfo)member; fullName = method.DeclaringType.FullName + "." + method.Name; } else { fullName = member.ToString (); } var attrs = member.GetCustomAttributes (typeof(TestCategoryAttribute), false); foreach (var obj in attrs) { var category = obj as TestCategoryAttribute; if (category == null) continue; if (categories.ContainsKey (category.GetType ())) { suite.Log ("Duplicate [{0}] in {1}.", category.GetType ().FullName, fullName); continue; } var configAttr = obj as ConfigurableTestCategoryAttribute; if (configAttr == null) { categories [category.GetType ()] = category; continue; } if (hasConfig) { suite.Log ("Only one single [ConfigurableTestCategory] is " + "allowed in {0}", fullName); continue; } config = configAttr.Resolve (); if ((config != null) && config.IsEnabled) categories [category.GetType ()] = category; else disabled = true; } var wattrs = member.GetCustomAttributes (typeof(TestWarningAttribute), false); foreach (var obj in wattrs) { var attr = obj as TestWarningAttribute; if (attr == null) continue; string message; if (member is MethodInfo) message = member.Name + ": " + attr.Message; else message = attr.Message; warnings.Add (new TestWarning (message)); } }
public TestContext CreateContext (TestFixture fixture) { var context = inner.CreateContext (fixture); ModifyContext (context); return context; }