在Windows中同时运行多个测试

时间:2013-09-25 15:16:48

标签: c# multithreading winforms forms selenium

我使用Selenium测试套件在Windows窗体/ C#中构建了一个测试应用程序。该程序通过打开带有测试对象的表单然后执行测试并在表单中显示结果来工作。所有这些都有效,但出于可扩展性的考虑,我希望同时运行多个测试。我现在拥有的是以自己的形式打开每个测试,但一旦启动,所有其他形式都被锁定,并且在第一个表单完成之前不会启动测试。有没有办法在它自己的线程上启动每个表单,以便它们可以同时运行?

我复制了实例化不同测试表单的相关块。每个表单都有自己的“开始”按钮来启动测试......

    foreach (ITest test in mastertestlist)
        {
            ResultsForm results = new ResultsForm();
            results.test = test;
            results.Show();
        }

1 个答案:

答案 0 :(得分:0)

您不希望拥有多个UI线程(每个Form都有自己的线程需要这个)。这只是一个令人头痛的问题,这会使程序真的难以使用。

而是继续使用单个UI线程,但是当您单击表单开始按钮时,不要在UI线程中执行您的实际测试/业务工作。让每个表单确保它所执行的测试工作在后台线程中执行。一种简单的方法是使用BackgroundWorker。 (还有许多其他可能的技术。)然后,您可以使用单个UI线程来处理基于测试结果的所有UI更新的编组,同时仍在后台线程中进行长时间运行。