2016-12-14 3 views
3

これは苦しい問題です。私はSwingLibraryでRobot Frameworkを使ってテストしようとしているJava Swingアプリケーションを持っています。私はVagrantボックス内のすべてをやっています。テストを開始するような実行スクリプトがあります。RobotFramework + SwingLibrary:テストはSSHで動作しません

export CLASSPATH=swinglibrary-1.8.0.jar:echoapp.jar 
export JAVA_OPTS="-Djava.awt.headless=true" 
jython `which robot` --loglevel DEBUG test.robot 

このスクリプトは、VMで実行すると完全に正常に動作します。しかし、SSHで実行した場合、正しく動作させることができません。次のエラーメッセージが表示されます。

[ ERROR ] Error in file '/vagrant/robotTests/test.robot': Getting keyword 
names from library 'SwingLibrary' failed: Calling dynamic method 
'getKeywordNames' failed: ExceptionInInitializerError 

私は全く混乱しています。最初はX11の問題だと思っていましたが、X11フォワーディングを有効にしてパージ付きバグボックスに接続し、アプリケーションをX11ウィンドウに表示させました。

エラーのためのグーグルは非常に有用ではありませんでした。何でも、誰ですか?私はこの問題についてかなり悪いです。

+0

は、jythonプロセスが実行されているマシンでも、スイングライブラリがインストールされていますか? –

+0

VirtualBox GUIを使ってVMにログインし、スクリプトを実行することができます。 VMにはjython、ロボットフレームワーク、スイングライブラリがインストールされています。 –

答えて

4

申し訳ありませんが、ここに私の問題があります。 X11転送のセットアップにもかかわらず、Xサーバは協力していませんでした。私はJenkinsでこれらのテストを実行する準備をしているので、それは長期的に私を助けてくれるものではありませんでした。代替のX Serverが必要になるでしょう。

幸いにも、私はGUIテストを試してみるのは初めてです。 Xサーバは、X仮想フレームバッファ(Xvfb)と呼ばれるヘッドレスシステムで使用するように設計されています。 the Wikipedia article

XvfbまたはX仮想フレームバッファーは、X11ディスプレイサーバープロトコルを実装するディスプレイサーバーです。他のディスプレイサーバーとは対照的に、Xvfbは画面出力を表示せずにメモリ内のすべてのグラフィカル操作を実行します。クライアントの観点からは、他のXディスプレイ・サーバーとまったく同じように動作し、要求を処理し、必要に応じてイベントとエラーを送信します。ただし、出力は表示されません。この仮想サーバーでは、実行中のコンピュータに画面または任意の入力デバイスが必要ありません。ネットワーク層のみが必要です。

CentOS/RHELの場合、xorg-x11-server-Xvfbパッケージはデフォルトのリポジトリで使用できます。

Available Packages 
Name  : xorg-x11-server-Xvfb 
Arch  : x86_64 
Version  : 1.17.2 
Release  : 22.el7 
Size  : 843 k 
Repo  : base/7/x86_64 
Summary  : A X Windows System virtual framebuffer X server. 
URL   : http://www.x.org 
License  : MIT and GPLv2 
Description : Xvfb (X Virtual Frame Buffer) is an X server that is able to run on 
      : machines with no display hardware and no physical input devices. 
      : Xvfb simulates a dumb framebuffer using virtual memory. Xvfb does 
      : not open any devices, but behaves otherwise as an X display. Xvfb 
      : is normally used for testing servers. 

それをインストールするには、次のことが行われた後は

sudo yum -y install xorg-x11-server-Xvfb 

が、私は私の環境では、私のシェルスクリプトを実行するためにxvfb-runコマンドを使用することができます。

[[email protected] robotTests]$ xvfb-run ./run.sh 
============================================================================== 
Test 
============================================================================== 
Test <Redacted One>             | PASS | 
------------------------------------------------------------------------------ 
Test <Redacted Two>             | PASS | 
------------------------------------------------------------------------------ 
Test <Redacted Three>             | PASS | 
------------------------------------------------------------------------------ 
Test                 | PASS | 
3 critical tests, 3 passed, 0 failed 
3 tests total, 3 passed, 0 failed 
============================================================================== 
Output: /vagrant/robotTests/output.xml 
Log:  /vagrant/robotTests/log.html 
Report: /vagrant/robotTests/report.html 
関連する問題