0

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

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

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

1 回答 1

0

您不想拥有多个 UI 线程(每个 Form 都有自己的线程需要这个)。这只是一个巨大的头痛,这将使该程序非常难以使用。

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

于 2013-09-25T15:20:00.027 回答