protected void SetupStandardHierarchicalTestStructure( string[] testMethodAttrs, string[] testSetupAttrs, string[] fixtureSetupAttrs, string[] assemblySetupAttrs, FixtureConstuctorSemantics fixtureConstructorSemantics) { this.AddRepository(testMethodAttrs, method => method, null, true, true); switch (fixtureConstructorSemantics) { case FixtureConstuctorSemantics.InstanceConstructorCalledOncePerFixture: { this.AddRepository(testSetupAttrs, method => method.DeclaringType, (method, prevType) => IsTypeAssignableIgnoreGenericArgs((Type)prevType, method.DeclaringType), false, false); var fixtureSetupMatcher = CreateAttributeMatcher(fixtureSetupAttrs); this.AddRepository( method => fixtureSetupMatcher(method) || MatchTestClassConstructor(ConstructorKind.Both, method, testMethodAttrs), method => method.DeclaringType, null, false, true); } break; case FixtureConstuctorSemantics.InstanceConstructorCalledOncePerTest: { var testSetupMatcher = CreateAttributeMatcher(testSetupAttrs); var fixtureSetupMatcher = CreateAttributeMatcher(fixtureSetupAttrs); this.AddRepository( method => testSetupMatcher(method) || MatchTestClassConstructor(ConstructorKind.Instance, method, testMethodAttrs) || MatchTestClassDispose(method, testMethodAttrs), method => method.DeclaringType, (method, prevType) => IsTypeAssignableIgnoreGenericArgs((Type)prevType, method.DeclaringType), false, false); this.AddRepository( method => fixtureSetupMatcher(method) || MatchTestClassConstructor(ConstructorKind.Static, method, testMethodAttrs), method => method.DeclaringType, null, false, true); } break; } if (assemblySetupAttrs != null) { this.AddRepository(assemblySetupAttrs, method => method.DeclaringType.Assembly, null, false, true); } }
protected void SetupStandardHierarchicalTestStructure( string[] testMethodAttrs, string[] testSetupAttrs, string[] fixtureSetupAttrs, string[] assemblySetupAttrs, FixtureConstuctorSemantics fixtureConstructorSemantics) { this.AddRepository(testMethodAttrs, method => method, null, true, true); switch (fixtureConstructorSemantics) { case FixtureConstuctorSemantics.InstanceConstructorCalledOncePerFixture: { this.AddRepository(testSetupAttrs, method => method.DeclaringType, (method, prevType) => IsTypeAssignableIgnoreGenericArgs((Type)prevType, method.DeclaringType), false, false); var fixtureSetupMatcher = CreateAttributeMatcher(fixtureSetupAttrs); this.AddRepository( method => fixtureSetupMatcher(method) || MatchTestClassConstructor(ConstructorKind.Both, method, testMethodAttrs), method => method.DeclaringType, null, false, true); } break; case FixtureConstuctorSemantics.InstanceConstructorCalledOncePerTest: { var testSetupMatcher = CreateAttributeMatcher(testSetupAttrs); var fixtureSetupMatcher = CreateAttributeMatcher(fixtureSetupAttrs); this.AddRepository( method => testSetupMatcher(method) || MatchTestClassConstructor(ConstructorKind.Instance, method, testMethodAttrs) || MatchTestClassDispose(method, testMethodAttrs), method => method.DeclaringType, (method, prevType) => IsTypeAssignableIgnoreGenericArgs((Type)prevType, method.DeclaringType), false, false); this.AddRepository( method => fixtureSetupMatcher(method) || MatchTestClassConstructor(ConstructorKind.Static, method, testMethodAttrs), method => method.DeclaringType, null, false, true); } break; } if (assemblySetupAttrs != null) this.AddRepository(assemblySetupAttrs, method => method.DeclaringType.Assembly, null, false, true); }