public TestingData() { EndTime = DateTime.MinValue; Completed = false; ErrorType = Testing.ErrorType.NoError; Exception = null; InputData = new TestingConfiguration(); OutputData = new TestingConfiguration(); }
public TestingPoint() { Config = new TestingConfiguration(); }
/// <summary> /// 开始测试。 /// </summary> /// <param name="groupName">要进行测试的测试组名。</param> /// <param name="keep">指示只执行一次测试,还是持续进行测试。</param> public void BeginTest(string groupName, bool keep) { // 开始进行测试 if (this.Config == null) throw new ArgumentNullException("Config"); var group = this.Config[ConfigKeys.TestingGroup] as TestingGroup; if (group == null) throw new ArgumentException("配置项缺乏 ConfigKeys.TestingGroup"); this.Status = TestingStatus.Running; ThreadPool.QueueUserWorkItem(status => { TestingConfiguration input = new TestingConfiguration(); foreach (var point in group.Points) { for (var i = 0; i < point.Times; ++i) { var item = Activator.CreateInstance(Type.GetType(point.Type)) as TestingItem; var data = new TestingData() { Config = this.Config, InputData = input != null ? new TestingConfiguration(point.Config.Concat(input).ToList()) : point.Config, Point = point, Time = i, Timeout = new TimeSpan(point.Timeout * 10000), StartTime = DateTime.Now }; this.OnTestingItemBegin(data); item.Test(data); this.OnTestingItemEnd(data); if (data.OutputData != null) { input.AddRange(data.OutputData); } } } this.Status = TestingStatus.Stop; }); }