2015-03-27 3 views
0

Я создал приложение WinForms, состоящее только из RichTextBox, и ive построил его в EXE.Как я могу взаимодействовать с моим приложением WinForms от UnitTest

Назначение этого EXE - действовать как регистратор, чтобы при выполнении им текущих тестов журнал выводился на этот EXE.

Важно отметить, что этот EXE ссылается в отдельном модульном тесте (который будет выполняться Microsoft Test Manager), добавив EXE в качестве ссылки в проекте. Кажется, это разоблачает объекты, которые мне нужны.

У меня был некоторый успех с использованием HTTP через интерфейсы ChannelFactory, но я бы предпочел напрямую поговорить с EXE.

Эти модульные тесты Я по сути отправляю и получаю данные из OpenVMS, и некоторые из этих тестов могут занять некоторое время.

Я построил новый проект консоли, чтобы проверить открытые методы я выставлены в моем logger.exe и до сих пор Heres мой код:

TerminalLogger.Logger term = new TerminalLogger.Logger(); 
term.TerminalLog("Test"); 

Когда я запускаю это форма открывается, но ничего нагрузки in. Таким образом, я предполагаю, что это потому, что форма работает в одном потоке? Мне нужно, чтобы эта форма работала в своем потоке?

Я замечаю, что если я добавлю «термин», чтобы смотреть в Visual Studio и проверять richtextbox, я вижу, что он фактически написал значение «Test» для объекта, но, конечно, я не могу видеть это как форму hasnt полностью отображается.

Мне все еще нужно иметь возможность вызывать методы типа term.LogMessage («Пример сообщения») и получать его для отображения в форме.

Если вам нужна дополнительная информация, пожалуйста, добавьте комментарий, и я сделаю все возможное, чтобы подробнее рассказать о моем вопросе.

+1

Это не единичный тест, а скорее какой-то интеграционный тест. –

+0

Я имею в виду, что тип проекта - это единичный тест. Затем он запускается на виртуальной машине через диспетчер тестирования Microsoft – Festivejelly

+0

Но я предполагаю, что если я смогу заставить его работать через консольное приложение, я могу заставить его работать с типом Unit Test. – Festivejelly

ответ

0

Ну, я попросил одного из веб-разработчиков в моей организации отказаться от них, и они могли бы помочь, и, по-видимому, вызвали перерисовать мою проблему !.

Я просто добавил:

 LogConsole.TextChanged += (sender, e) => 
     { 
      if (this.Visible) 
      { 
       this.Refresh(); 
      } 
     }; 

Вот как я называю код из моего модульного тестирования:

TerminalLogger.Logger term = new TerminalLogger.Logger(); 

     term.Show(); 
     term.TerminalLog("Test1"); 
     term.TerminalLog("Test2"); 

И я могу отправлять сообщения на него без него блокировку.

+0

Существует проблема с этим решением в том, что, хотя форма сама перерисовывается, она становится «заблокированной», поэтому вы не можете прокручивать вверх и вниз по журналу. – Festivejelly