11.5. Вызов функций из .NET сборок

Назад: 11.4 Вызов API-функций и функций из DLL Содержание Дальше: 11.6 Remote Desktop, Virtual PC, VMware

Существует 2 способа вызова функций из .NET сборок (assemblies):

  1. Используя объект dotNET
  2. Используя домен приложения

Мы рассмотрим оба этих примера.

В качестве примера .NET-приложения мы возьмем приложение nUnitTestingApp, которое можно найти в архиве с проектом и которое мы создавали специально для главы 17 Модульное тестирование.

Использование объекта dotNET

Прежде, чем получить доступ к .NET методам из скриптов TestComplete, необходимо добавить эти методы в список CLR Bridge. Для этого щелкнем правой кнопкой мыши на имени проекта в Project Explorer и выберем пункт меню Edit – Properties, после чего выберем элемент CLR Bridge.

Здесь мы можем добавлять различные методы как из произвольных файлов (Browse Files), так и из глобального кэша сборок (Browse GAC).

Нажмем кнопку Browse Files и выберем файл nUnitTestingApp.exe. Теперь методы из нашего класса Form1 можно видеть и вызывать непосредственно из скриптов TestComplete с помощью объекта dotNET.

function TestDotNET()

{

  var res = dotNET.nUnitTestingApp.Form1.PlusMethod(2, 3);

  Log.Message(res);

}

Результат работы данной функции:

Этот способ позволяет вызывать статические методы. Если вам нужно вызвать нестатический метод, сначала необходимо создать объект соответствующего класса с помощью конструктора. Все конструкторы имеют имена вида ztor, ztor_1, ztor_2 и т.д.

Обратите внимание, что запускать само приложение нам не нужно. Также обратите внимание на параметры Preferred architecture… и Preffered apartment model… на странице CLR Bridge. Эти параметры необходимо установить правильно в зависимости от сборки. Подробнее об этих опциях можно прочитать в разделе справки CLR Bridge Options.

Также обратите внимание, что если в имени namespace используется точка (например, System.Collection), то точку необходимо заменить на знак подчеркивания (System_Collection).

Использование домена приложения

Любой запущенный .NET процесс имеет метод AppDomain, который позволяет обращаться к методам сборок без добавления их в список CLR Bridge.

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

res = Sys.Process(“nUnitTestingApp”).AppDomain(“nUnitTestingApp.exe”).dotNET.nUnitTestingApp.Form1.MinusMethod(10,3);

  Log.Message(res);

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

Назад: 11.4 Вызов API-функций и функций из DLL Содержание Дальше: 11.6 Remote Desktop, Virtual PC, VMware