Звучит так, как будто вы описываете, что ваш тестовый код White и тестируемое приложение выполняются в одном и том же процессе.
Из того, что я могу сказать, автор White не одобряет этого - смотритевопрос № 9 на этой белой странице часто задаваемых вопросов:
http://white.codeplex.com/wikipage?title=Other%20questions
Может ли белый тест выполняться в том же процессе, что и приложение?
Нет.Белый не предназначен для работы в этом режиме, так как это может вызвать проблемы с многопоточностью.В принципе, не стоит объединять тестовый код с тестируемым приложением, так как они будут развиваться независимо друг от друга.
Тем не менее, приведенная ниже статья поможет вам сделать то, что нужно.Вы хотите:
http://msdn.microsoft.com/en-us/magazine/cc163864.aspx
В приведенной выше статье проверьте код в «Рис. 5 - Запуск приложения».
Авторский подход выглядит примерно так:вы описываете - его код, кажется, загружает сборку, использует его для создания экземпляра объекта Form, а затем запускает отдельный поток, в котором вызывается Application.Run для запуска формы.
Как только ваш AUTработает, вы должны иметь возможность присоединиться к нему, используя White в главном потоке.
Возможно, эта техника поможет вам начать манипулировать AUT так, как вы надеялись?
Простодля удобства вот рисунок 5 из статьи:
static Form LaunchApp(string exePath, string formName)
{
Thread.Sleep(delay);
Assembly a = Assembly.LoadFrom(exePath);
Type formType = a.GetType(formName);
Form resultForm = (Form)a.CreateInstance(formType.FullName);
Thread t = new Thread(new ThreadStart(new AppState(resultForm).RunApp));
t.ApartmentState = ApartmentState.STA;
t.IsBackground = true;
t.Start();
return resultForm;
}
private class AppState
{
public AppState(Form f) { FormToRun = f; }
public readonly Form FormToRun;
public void RunApp()
{
Application.Run(FormToRun);
}
}