Exemple #1
0
        public void Add(object fixture)
        {
            Test test = TestFixtureBuilder.BuildFrom(fixture);

            if (test != null)
            {
                Add(test);
            }
        }
        public LegacySuite(Type fixtureType) : base(fixtureType)
        {
            PropertyInfo suiteProperty = GetSuiteProperty(fixtureType);

            if (suiteProperty == null)
            {
                throw new ArgumentException("Invalid argument to LegacySuite constructor", "fixtureType");
            }

            this.fixtureSetUp    = NUnitFramework.GetFixtureSetUpMethod(fixtureType);
            this.fixtureTearDown = NUnitFramework.GetFixtureTearDownMethod(fixtureType);

            MethodInfo method = suiteProperty.GetGetMethod(true);

            if (method.GetParameters().Length == 0)
            {
                Type returnType = method.ReturnType;

                if (returnType.FullName == "NUnit.Core.TestSuite")
                {
                    TestSuite suite = (TestSuite)suiteProperty.GetValue(null, new Object[0]);
                    foreach (Test test in suite.Tests)
                    {
                        this.Add(test);
                    }
                }
                else if (typeof(IEnumerable).IsAssignableFrom(returnType))
                {
                    foreach (object obj in (IEnumerable)suiteProperty.GetValue(null, new object[0]))
                    {
                        Type type = obj as Type;
                        if (type != null && TestFixtureBuilder.CanBuildFrom(type))
                        {
                            this.Add(TestFixtureBuilder.BuildFrom(type));
                        }
                        else
                        {
                            this.Add(obj);
                        }
                    }
                }
                else
                {
                    this.RunState     = RunState.NotRunnable;
                    this.IgnoreReason = "Suite property must return either TestSuite or IEnumerable";
                }
            }
            else
            {
                this.RunState     = RunState.NotRunnable;
                this.IgnoreReason = "Suite property may not be indexed";
            }
        }