/** * Add all test cases to the test suite. * * @param test, the test case containing the tests we will add. */ public void AddAll(UnityTestCase test) { // If test invalid if (null == test) { // Error throw new Exception("Invalid test case encountered."); } // For each method in the test case Type type = test.GetType(); foreach (MethodInfo method in type.GetMethods()) { // For each unit test attribute foreach (object obj in method.GetCustomAttributes(typeof(UnitTest), false)) { // If attribute is valid Attribute testAtt = obj as Attribute; if (null != testAtt) { // create GameObject and attach GameObject gameobj = new GameObject("Test" + type.Name + "_" + method.Name); UnityTestCase tmp = gameobj.AddComponent(type.Name) as UnityTestCase; tmp.SetTestMethod(method.Name); m_tests.Add(tmp); } } } }
protected virtual void AddCompornents(Unity3D_TestSuite suite) { // For each assembly in this app domain foreach (Assembly assem in AppDomain.CurrentDomain.GetAssemblies()) { // For each type in the assembly foreach (Type type in assem.GetTypes()) { // If this is a valid test case // i.e. derived from TestCase and instantiable if (typeof(UnityTestCase).IsAssignableFrom(type) && type != typeof(UnityTestCase) && !type.IsAbstract) { // Add tests to suite UnityTestCase test = gameObject.AddComponent(type.Name) as UnityTestCase; suite.AddAll(test); } else if (typeof(TestCase).IsAssignableFrom(type) && type != typeof(TestCase) && !type.IsAbstract) { suite.AddAll(type.GetConstructor(new Type[0]).Invoke(new object[0]) as TestCase); } } } }