Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Launch Application vs Run and Return RC


(sTest) #1

Всем доброе время суток!

 

Недаво взял в руки Robot Framework. Пока не знаю, будем ли использовать в проекте, как пойдет.

Перерыл интернет, но информации не так уж много по нему, не считая, конечно, гайда.

 

Приложение Java с Swing objects.

Установил минимальный набор, Jython, SwingLibrary и тд. Но вот не могу нормально запустить приложение из-под робота.

Приложение запускает батником, где много всяких аргументов передается.

Попробовал использовать Launch Application, задавая Class Name и аргументы, но ругается на runexception. Пока не смог понять, что не так передаю.

А если запускать батник, то после запуска приложение тест стопится и продолжает дальше, если закрыть приложение.. что не есть чего хочется.

 

Что делаю не так? Запускал через консоль jybot test.txt.

Почему Run останавливает тест, хотя приложение запускается? Может в батнике что-то надо дописать, сейчас там просто java -classpath app.jar, arguments, main class.

Если я подниму приложение из батника с помощью Run, то дальше я могу с ним общаться так же, как и если бы запустил через Launch Application?

 

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

 


(Mykhailo Poliarush) #2

а Вы пробовали запускать демо приложение 

http://code.google.com/p/robotframework-swinglibrary/wiki/SwingLibraryDemo

у вас оно заработало?


(Mykhailo Poliarush) #3

ну и также добавьте сюда код теста, чтобы можно было на него посмотреть

иначе тяжело понять, что вы делаете в тесте


(sTest) #4

Вот тест:

 

*** Settings ***
Library           OperatingSystem

*** Test Case ***
First Test Cases
    Run    "C:\\TestApp\\Run.bat"  

Second Test Cases
    Log Variables

Батник выглядит так.

"C:\Program Files\Java\jre6\bin\java" -splash:"C:\TestApp\images\ClamSplash2.png" -classpath "C:\TestApp\AllTestApp.jar";"C:\TestApp\3DPDF\prc2pdf.jar" -DTestApp.addins="C:\TestApp\addins" -Dcadfix.dir="C:\TestApp\cadfix" -Dsun.java2d.noddraw=true -DTestApp.globalInit=false -DTestAppTag= -DTestAppVersion=2 -DTestAppRevision=4 -DTestAppBugFix=0 -DTestApp.install.dir="C:\TestApp" -Djava.library.path=""C:\TestApp\native\win32";"C:\TestApp\3DPDF"" -Dpython.cachedir="C:\Documents and Settings\sTest_Folder\.TestApp\.jythoncache" -Dpython.images="C:\TestApp\images" -Dpython.path=".";"";"C:\TestApp\Lib";"C:\TestApp\Lib\site-packages" -DAboutFile="C:\TestApp\info\About.txt" -Dagps.testMode=NONE -Dcversion=vs2008 -Xmx512m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=128m com.TestApp.TestApp

Батник рабочий, приложение запускается, но First Test Cases подвисает и продолжает работу только после того, как приложение закрывается.

 

Запустить через Launch Application не получается, потому что аргументов много и что-то не нравится. Но в эту сторону ещё не сильно копал.

Почему после Run тест виснет?

 

 


(sTest) #5

Демка по ссылке работает ок. Но там используется Start Application из SwingLibrary. И в этом примере без аргумента вызывается приложение.


(sTest) #6

Немного поэкспериментировал в командой строке.

 

Следующая строка поднимает приложение:

java -DTestApp.install.dir="C:\TestApp" -Djava.library.path=""C:\TestApp\native\win32";"C:\TestApp\3DPDF"" -Dpython.cachedir="C:\Documents and Settings\sTest_Folder\.TestApp\.jythoncache" -Dpython.images="C:\TestApp\images" -Dpython.path=".";"";"C:\TestApp\Lib";"C:\TestApp\Lib\site-packages" com.TestApp.TestApp

Но получается, что перед вызовом класса надо определить системные свойства. Как это можно сделать? Пробовал их как аргумент передавать в Launch Application, но не катит, ругается как будто их просто нет. Что не так делаю?


(sTest) #7

Нашел ключ Set System Property. Но пока неудачно все равно. Похоже становится горячо :) Из-за чего примерно понятно, буду смотреть.


(sTest) #8

Уже и не знаю, стоит ли дальше копать.

Приложение подгружает для себя jython библиотеки, они используются в консоле приложения. При том библиотеки идут вместе с приложением.

Робот так же используеют jython, но уже из установленного мной библиотеки. В результате там какие-то разные версии, конфилкт интересов и тд. Уже и в движке робота покопался. Не получается.

 

А все же вопрос - если я запускают приложение через батник в тесте, типа Run start.bat, а в батнике вызов notepad.exe. Почему когда notepad поднимается, то тест зависает и продолжается только когда notepad закрыть?


(Mykhailo Poliarush) #9

да походу у вас проблема с библиотеками и их загрузкой

а почему notepad запускается а тест ждет, так это потому что поток запускается не в фоновом режиме

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