Как к правильно модульному тесту, называя метод UI на другом потоке?

Попытайтесь использовать -

psql -d postgres

я также сталкивался с той же проблемой, когда я работал psql

5
задан Community 23 May 2017 в 12:19
поделиться

1 ответ

Я пробовал разные вещи и пришел к следующему:

[Test]
public void TestInvokeExWithMethodReturningResultOnOtherThread ()
{
    // Prepare
    string result = string.Empty;
    var form = new Form ();
    var uiThread = new Thread (() => Application.Run (form));
    uiThread.SetApartmentState (ApartmentState.STA);
    uiThread.Start();
    Thread.Sleep (100);
    var thread = new Thread (() => result = form.InvokeEx (f => f.Text));

    // Execute
    thread.Start ();
    thread.Join ();
    form.InvokeEx (f => f.Close ());
    uiThread.Join ();

    // Verify
    Assert.That (result, Is.EqualTo ("Some label"));
}

Теперь это работает отлично.

Обратите внимание, что мне пришлось добавить перегрузку для InvokeEx для метод void.

5
ответ дан 14 December 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: