/// <summary> /// 收集Test的数据 /// </summary> static public void CollectTestClassData(TestType testType) { testMethodDataMap = new Dictionary<Type, List<TestMethodData>>(); List<Type> types = new List<Type>(); //判断不同的模式 if (testType == TestType.MonoOrCLR) { var assembly = typeof(BDLauncher).Assembly; types = assembly.GetTypes().ToList(); } else if (testType == TestType.ILRuntime) { types = ILRuntimeHelper.GetHotfixTypes(); } var attribute = typeof(UnitTestBaseAttribute); //测试用例类 List<Type> testClassList = new List<Type>(); foreach (var type in types) { var attrs = type.GetCustomAttributes(attribute, false); if (attrs.Length > 0) { testClassList.Add(type); } } //搜集Test信息 foreach (var type in testClassList) { var methods = type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); // var attrs = type.GetCustomAttributes(attribute,false); // var attr = attrs[0] as HotfixTest; var testMethodDataList = new List<TestMethodData>(); testMethodDataMap[type] = testMethodDataList; //获取uit test并排序 foreach (var method in methods) { var mattrs = method.GetCustomAttributes(attribute, false); var mattr = mattrs[0] as UnitTestBaseAttribute; //数据 var newMethodData = new TestMethodData() {MethodInfo = method, TestData = mattr,}; //添加整合排序 bool isAdd = false; for (int i = 0; i < testMethodDataList.Count; i++) { var tdata = testMethodDataList[i]; if (newMethodData.TestData.Order < tdata.TestData.Order) { testMethodDataList.Insert(i, newMethodData); isAdd = true; break; } } if (!isAdd) { testMethodDataList.Add(newMethodData); } } } }