8

.NET テスト用の NAnt/NUnit と .NET Web アプリケーションの継続的な統合に Jenkins を使用します。Jenkins は、自動化されたテストと共に多くのビルドを実行する 9 つのスレーブ (すべて Windows Server 2003) で構成されています。

JavaScript 単体テストを実行するために js-test-driver をセットアップしようとしていますが、以下の NAnt タスクは開発者ワークステーションでローカルに正常に動作しています。Internet Explorer は、すべての Web アプリケーションの唯一のターゲット ブラウザーであるため、テストしたい唯一のブラウザーです。

<target name="jsTests" >
    <echo message="Running JavaScript tests..." />
    <exec program="java.exe">
        <arg line="-jar '${jstestdriver.dir}\JsTestDriver.jar'" />
        <arg line="--config '${ui.webtests.dir}\JsTestDriver.conf'" />
        <arg line="--port 9876"/>
        <arg line="--browser 'C:\program files\internet explorer\iexplore.exe'"/>
        <arg line="--verbose"/>
        <arg line="--reset"/>
        <arg line="--tests all"/>
        <arg line="--testOutput '${results.jstestdriver.dir}'"/>
    </exec>
</target>

おそらく次の理由により、Jenkins で同じタスクに問題が発生しています。

  1. これはサーバーであり、サービス アカウントとして実行しています
  2. サーバーへのブラウザのインス​​トールにはセキュリティ上の制限があります

js-test-driver wikiGettingStartedページには、js-test-driver サーバーが実行されているマシンとは別のマシンでブラウザーを実行できると書かれています。

テストを実行する前に、テスト サーバーを起動し、少なくとも 1 つのスレーブ ブラウザーをキャプチャする必要があります。テスト ランナーが存在するマシンにサーバーを配置する必要はなく、ブラウザー自体も別のマシンに配置することができます

  1. Jenkins/Windowsセットアップでこれを行った人はいますか?
  2. js-test-driver を実行するためのスケーラブルなセットアップの代替手段はありますか?
4

1 に答える 1

2

私は同様のことをしましたが、100% Windows のセットアップでは行いませんでしたが、Windows で同様のことを行うことに問題はないと思います。

私の場合、IE7、IE8、IE9、Chrome、Safari、Firefox 3.6、および最新バージョンなど、より多くのブラウザーでテストする必要があったため、必要なすべてのブラウザーを備えた仮想マシンと別のブラウザーをインストールしました。サーバーモードで実行されている jstestdriver を備えたマシン:

java -Xmx256m -jar JsTestDriver-1.3.4-a.jar --port 4224

ブラウザーを備えたすべての仮想マシンには、常にそのサーバーを指すインスタンスがあります (http://[jstd-server-ip]:4224/capture)

これらのマシンでは、ブラウザのインス​​タンスを毎朝リセットするスケジュールされたタスクを作成しました。これは、一部のブラウザ、特に IE7 が 3 日以上実行されていると動作を停止する傾向があるためです。

taskkill /f /IM iexplore.exe
iexplore.exe http://[jstd-server-ip]:4224/capture

これらのマシンと jstestdriver サーバーは常に実行されています。あなたの場合、それが可能かどうかはわかりません。

次に、アプリケーションでは、テストを起動するために Maven プラグインを使用しています: http://code.google.com/p/jstd-maven-plugin/wiki/GettingStarted私の場合はうまく機能しますが、 Mavenを使用すると、NAntでは次のようになるはずです:

<target name="jsTests" >
    <echo message="Running JavaScript tests..." />
    <exec program="java.exe">
        <arg line="-jar '${jstestdriver.dir}\JsTestDriver.jar'" />
        <arg line="--config '${ui.webtests.dir}\JsTestDriver.conf'" />
        <arg line="--browser 'C:\program files\internet explorer\iexplore.exe'"/>
        <arg line="--verbose"/>
        <arg line="--reset"/>
        <arg line="--tests all"/>
        <arg line="--testOutput '${results.jstestdriver.dir}'"/>
    </exec>
</target>

JsTestDriver.confの先頭に次の行を追加します。

server: http://[jstd-server-ip]:4224

これは、jenkins によって実行される jstestdriver のクライアントインスタンスに、サーバーとしてhttp://[jstd-server-ip]:4224を使用するように指示します。

これがお役に立てば幸いです!

于 2012-05-14T15:33:40.147 に答える