日期:2014-05-20 浏览次数:20789 次
public class TestRunner { private List<Assembly> _assemblies = new List<Assembly>(); private List<Pair> _TestProcs = null; /// <summary> /// 从测试程序集中找出的测试用例。可以通过修改此集合内容自定义测试用例。 /// </summary> public List<Pair> TestProcs { get { if (_TestProcs == null) { _TestProcs = new List<Pair>(); _assemblies.ForEach(asm => asm.GetTypes() .ForEach(t => t.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static) .Where(m => m.ReturnParameter.ParameterType == typeof(void) && m.GetParameters().Length == 0) .ForEach(m => { var att = m.GetCustomAttributes(typeof(RunTestAttribute), false); if (att.Length != 0) { RunTestAttribute attr = att[0] as RunTestAttribute; if (attr.TimeStamp >= this.MinTime && attr.TimeStamp <= this.MaxTime) for (var n = 0; n < attr.实例数 * this.FuckTimes; n++) TestProcs.Add(new Pair() { Proc = (ThreadStart)Delegate.CreateDelegate(typeof(ThreadStart), m), Attr = attr }); } }))); } return _TestProcs; } } public TestRunner() { var thisAsmName = Assembly.GetExecutingAssembly().GetName().Name; AppDomain.CurrentDomain.GetAssemblies() .Where(asm => asm.GetReferencedAssemblies().Any(a => a.Name == thisAsmName)) .ForEach(asm => _assemblies.Add(asm)); } .................
static public void ForEach<T>(this IEnumerable<T> array, Action<T> action) { foreach (T x in array) { action(x); ; } }