RemoteSwingLibraryで基本的なロボットフレームテストを実行しようとしていますが、動作させることができません。ロボットのフレームワークスタンドアロンジャーを経てEclipse内からRemoteSwingLibraryTimeoutError:タイムアウトまでにエージェントポートが受信されない
*** Settings ***
Library SwingLibrary
*** Test Cases ***
Foobar Test
Start Application fully.qualified.name.of.my.class
私はそれを実行しています:
私はSwingLibraryとうまく次のテストを実行することができました。私はrobotframework-3.0.2.jarとswinglibrary-1.9.7.jarを自分のクラスパスに置き、メインクラスがorg.robotframework.RobotFrameworkである私のプロジェクトのデフォルトクラスパスを使って新しい実行コンフィギュレーションを作成しました。引数には、テストファイルの名前を指定します。だから、うまくいくようです。それから私はRemoteSwingLibraryとほぼ正確に同じことを実行しようとしました:
*** Settings ***
Library RemoteSwingLibrary
*** Test Cases ***
Foobar Test
Start Application my_app java fully.qualified.name.of.my.class
私はremoteswinglibrary-2.2.1.jarと私のクラスパス上swinglibrary jarファイルを置き換えると私は同じテストを実行しました。出力は言う:
console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.
==============================================================================
Remotetest
==============================================================================
Foobar Test | FAIL |
RemoteSwingLibraryTimeoutError: Agent port not received before timeout
------------------------------------------------------------------------------
Remotetest | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
Output: C:\<path>\output.xml
Log: C:\<path>\log.html
Report: C:\<path>\report.html
(つまり、「コンソール:...インストールに失敗しました」に注意一部が正常であると私は、私はそれを心配する必要はないと思う)私は掘るとき
アプリケーション起動のキーワードのレポートは、それが
13:48:40.070 INFO Link to stdout
13:48:40.070 INFO Link to stderr
13:48:40.070 INFO -javaagent:"C:<pathToProject>\__pyclasspath__"=127.0.0.1:63110
13:48:40.071 INFO Starting process:
java fully.qualified.name.of.my.class
13:49:40.145 INFO Failed to start application: Traceback (most recent call last):
File "__pyclasspath__/RemoteSwingLibrary.py", line 307, in start_application
File "__pyclasspath__/RemoteSwingLibrary.py", line 353, in _application_started
File "__pyclasspath__/RemoteSwingLibrary.py", line 373, in _get_agent_address
RemoteSwingLibraryTimeoutError: Agent port not received before timeout
13:49:40.155 INFO Waiting for process to complete.
13:49:40.165 INFO Process completed.
13:49:40.165 INFO STDOUT: Error occurred during initialization of VM
agent library failed to init: instrument
13:49:40.175 INFO STDERR: Error opening zip file or JAR manifest missing : C:<pathToProject>\__pyclasspath__
Picked up JAVA_TOOL_OPTIONS: -javaagent:"C:<pathToProject>\__pyclasspath__"=127.0.0.1:63110
Picked up _JAVA_OPTIONS: -Djava.security.policy="C:\<UserFolder>\
AppData\Local\Temp\2\grant_all_f_vfit.policy"
13:49:40.195 FAIL RemoteSwingLibraryTimeoutError: Agent port not received before timeout
言う私は、この直感は本当に何に設立されたかどうかわからないんだけど、私の疑いは、クラスパスの問題があるということです。私は、 "java fully.qualified.name.of.my.class"でStart Applicationキーワードを呼び出すと、おそらくクラスパスを渡す必要があると思います。私はおそらく、リモートでないバージョンがこれをうまく処理しているとは思わないかもしれないと思っていたかもしれません。おそらく、同じJVMで私のアプリケーションを実行していて、ロボットフレームワークを起動していて、 。
それが問題なら、おそらく私のjavaコマンドで-cpオプションを使って修正できます。しかし、この特定のプロジェクトのクラスパスは実際かなり長い(私のプロジェクトは他の多くのプロジェクトに依存している)ので、すべてをリストアップする必要はありません。また、新しい依存関係を追加すると、テストファイルのクラスパスも更新する必要はありません。
私は現在のクラスパスをリモートアプリケーションに渡すことができるいくつかの魔法の方法はありますか?または、おそらくこの問題の他の解決策ですか?
更新
私は-cpと私の巨大なクラスパスで再び試してみました、それは私のクラスパスが起こっている何とは何の関係もないことをその可能なので、私に同じエラーを与えました。
ポート番号を明示的に指定しようとしましたが、少し出力が異なります(まだ動作しません)。私はまた、少し詳細を与えるデバッグ設定があることを発見しました。ここで私は、新しいセットアップです:
*** Settings ***
Library RemoteSwingLibrary debug=True port=8242
*** Test Cases ***
Foobar Test
Start Application my_app java -cp <classpath> <fully.qualified.name.of.my.class> remote_port=8242
そして、ここでは、私の新しい出力されます。
13:48:40.070 INFO Link to stdout
13:48:40.070 INFO Link to stderr
13:48:40.070 DEBUG Picked old JAVA_TOOL_OPTIONS=''
13:48:40.070 DEBUG Picked old _JAVA_OPTIONS=''
13:48:40.070 INFO -javaagent:"C:<pathToProject>\__pyclasspath__"=127.0.0.1:51509:DEBUG
13:48:40.070 DEBUG Set JAVA_TOOL_OPTIONS='-javaagent:"C:<pathToProject>\__pyclasspath__"=127.0.0.1:8242:APPORT=8242:DEBUG'
13:48:40.070 DEBUG SET _JAVA_OPTIONS='-Djava.security.policy="C:\<UserFolder>\AppData\Local\Temp\4\grant_all_haud6t.policy"'
13:48:40.071 INFO Starting process:
java -cp <classpath> <fully.qualified.name.of.my.class>
13:48:40.071 DEBUG Process configuration:
cwd: C:<PathToProject>
shell: True
stdout: C:<PathToProject>\<someBigPath>.txt
stderr: C:<PathToProject>\<someBigPath>.txt
alias: my_app
env: None
13:48:40.100 DEBUG Returned old JAVA_TOOL_OPTIONS=''
13:48:40.100 DEBUG Returned old _JAVA_OPTIONS=''
13:48:40.102 INFO connection to started application at 127.0.0.1:8242
13:48:40.120 DEBUG remote swinglibrary instantiated
13:48:40.121 DEBUG remote services instantiated
13:48:40.121 INFO waiting for api at 127.0.0.1:8242
13:49:40.145 INFO Failed to start application: Traceback (most recent call last):
File "__pyclasspath__/RemoteSwingLibrary.py", line 307, in start_application
File "__pyclasspath__/RemoteSwingLibrary.py", line 357, in _application_started
File "__pyclasspath__/RemoteSwingLibrary.py", line 344, in _wait_for_api
RuntimeError: Connecting to api at 127.00.1:8242 has failed: ''
13:49:40.155 INFO Waiting for process to complete.
13:49:40.165 INFO Process completed.
13:49:40.165 INFO STDOUT: Error occurred during initialization of VM
agent library failed to init: instrument
13:49:40.175 INFO STDERR: Error opening zip file or JAR manifest missing : C:<pathToProject>\__pyclasspath__
Picked up JAVA_TOOL_OPTIONS: -javaagent:"C:<pathToProject>\__pyclasspath__"=127.0.0.1:8242:APPORT=8242:DEBUG
Picked up _JAVA_OPTIONS: -Djava.security.policy="C:\<UserFolder>\
AppData\Local\Temp\2\grant_all_f_vfit.policy"
13:49:40.195 FAIL Connecting to api at 127.0.0.1:8242 has failed: ''
13:49:40.195 DEBUG Traceback (most recent call last):
File "__pyclasspath__/RemoteSwingLibrary.py", line 498, in run_keyword
File "__pyclasspath__/RemoteSwingLibrary.py", line 307, in start_application
File "__pyclasspath__/RemoteSwingLibrary.py", line 357, in _application_started
File "__pyclasspath__/RemoteSwingLibrary.py", line 344, in _wait_for_api
さらに別のアップデート
私はこれがあること「__pyclasspath__
」とは何かを持っていることと思いますエラーメッセージに表示されます。私は自分の環境変数をリストする "set"コマンドの前にある.batファイルにjavaコマンドを置きます。私はちょうど良い(それはJavaアプリケーションを起動する)コマンドラインから.BATファイルを実行することができます。
は、それから私は何をする私の.robotファイルを変更:-javaagent: "__ pyclasspath__"
Error opening zip file or JAR manifest missing : C:<pathToProject>\__pyclasspath__
がJAVA_TOOL_OPTIONSをピックアップ:
Foobar Test
Start Application my_app cd robotframework/tests && Run.bat remote_port=8242
は、私は基本的に前に私が得た同じエラー出力を取得します= 127.0.0.1:8242:8242 = APPORT:DEBUG 拾っ_JAVA_OPTIONS:-Djava.security.policyのは= "C:\\のAppData \ローカル\ Tempに1 \ grant_all_lgirs7.policy \"
JAVA_TOOL_OPTIONSと_JAVA_OPTIONS(エラー出力の内容と一致する)を除き、バッチスクリプトが出力する環境は同じです。 __pyclasspath__
という環境変数はありませんので、それが問題なのかどうか疑問に思っています。
JAVA_TOOL_OPTIONSを自分のロボットから見た出力と一致するように設定しました。コマンドラインから.batスクリプトを実行しようとすると同じエラーメッセージが表示されるため、環境変数が問題である。