<PackageReference Include="NUnit" Version="3.0.0-alpha-5" />

DefaultSuiteBuilder

Built-in SuiteBuilder for all types of test classes.
using NUnit.Framework.Interfaces; using System; namespace NUnit.Framework.Internal.Builders { public class DefaultSuiteBuilder : ISuiteBuilder { private NUnitTestFixtureBuilder defaultBuilder = new NUnitTestFixtureBuilder(); public bool CanBuildFrom(Type type) { if (type.IsAbstract && !type.IsSealed) return false; if (type.IsDefined(typeof(IFixtureBuilder), true)) return true; if (type.IsGenericTypeDefinition) return false; return Reflect.HasMethodWithAttribute(type, typeof(IImplyFixture)); } public Test BuildFrom(Type type) { IFixtureBuilder[] fixtureBuilderAttributes = GetFixtureBuilderAttributes(type); if (!type.IsGenericType) { switch (fixtureBuilderAttributes.Length) { case 0: return defaultBuilder.BuildFrom(type); case 1: return fixtureBuilderAttributes[0].BuildFrom(type); default: return BuildMultipleFixtures(type, fixtureBuilderAttributes); } } return BuildMultipleFixtures(type, fixtureBuilderAttributes); } private Test BuildMultipleFixtures(Type type, IFixtureBuilder[] attrs) { TestSuite testSuite = new ParameterizedFixtureSuite(type); foreach (IFixtureBuilder fixtureBuilder in attrs) { testSuite.Add(fixtureBuilder.BuildFrom(type)); } return testSuite; } private IFixtureBuilder[] GetFixtureBuilderAttributes(Type type) { IFixtureBuilder[] array = new IFixtureBuilder[0]; while (type != (Type)null) { array = (IFixtureBuilder[])type.GetCustomAttributes(typeof(IFixtureBuilder), false); if (array.Length > 0) return array; type = type.BaseType; } return array; } } }