1

MSBuild からの実行中の Fitnesse テストを TFS の夜間ビルドに統合しようとしています。

自己完結型にするために、フィットネスから必要な場合にのみ seleniumRC サーバーを起動したいと思います。

「コマンド ライン フィクスチャ」があるのを見たことがありますが、それは Java で書かれています。使用できますか?

4

3 に答える 3

1

返信ありがとうございます。

これが私がこれまでやってきた方法です。

私は提供されたコマンド ライン (私の場合は startSelenium.bat) でプロセスを開始するフィット フィクスチャ (非常に単純) を作成しました。フィクスチャは ProcessID を返すので、それをフィットネス コンテキストに保存し、後でそのセッションを閉じることができます。

フィットネス テストで、このような SuiteSetUp ページを作成できるようになりました。

|RunCommandFixture|

|コマンドライン|RunCommand?|

|C:\Projects...\startSeleniumRC.bat|>>seleniumprocess|

そして、このようなSuiteTearDown

|RunCommandFixture|

|プロセスID|StopCommand?| |<

それは私にとってはうまくいきます。私のフィットネステストからの要求により、Selenium RC が起動しません。

于 2008-09-23T08:51:29.847 に答える
1

できるかもしれないと思います。を使用して、MSBuild で任意のプロセスを簡単に呼び出すことができます。仕事。ただし、これを行う際の問題は、exec タスクが続行する前に Selinium プロセスが終了するまで待機することであり、これは望ましい動作ではありません。プロセスを実行し、ビルド中に実行し続け、ビルドが終了したら破棄します。

したがって、これを行うには、おそらくカスタム MSBuild タスクを作成する必要があると思います。ビルド スクリプトに制御を戻す非同期に実行されるタスクの例については、次の投稿を参照してください。

http://blog.eleutian.com/2007/03/01/AsyncExecMsBuildTask.aspx

MSBuild から Java プログラムを呼び出す例 (ただし、この場合は同期) については、MSBuild から Antを呼び出す私のタスクをご覧ください。

http://teamrise.com/products/build/

MSBuild タスクの一部として、作成したプロセス ID を出力プロパティに出力して、ビルド スクリプトの最後でプロセスを強制終了する別のカスタム MSBuild タスクを呼び出せるようにする必要があります。これを行うには、MSBuild で変数として渡されたプロセス ID を検索し、 Process.Killメソッドを呼び出します。

Process process = Process.GetProcessById(ProcessId);
process.Kill();

とはいえ、ビルドのエラー パスなどに含まれていることを確認して、キル タスクが常に MSBuild で実行されるように注意する必要があります。おそらく、セレン RC スターター タスクで他の seleniumRC プロセスを探し、新しいプロセスを開始する前にそれらを強制終了することで、物事をもう少し回復力のあるものにすることができます。次のビルド。

とにかく-私の答えは大変な作業のように聞こえるので、他の誰かがより簡単な方法を思いつくことを願っています. FitNesse テストのテスト スイート起動時に seleniumRC プロセスを作成し、スイート ティアダウンでそれを強制終了するか、FitNesse ランナー タスクを拡張して seleniumRC を非同期に起動するカスタム タスクを作成してから実行できる場合があります。テストプロセスを実行し、その後それを強制終了します。

幸運を、

マーティン。

于 2008-09-19T09:09:11.237 に答える
0

ビルド スクリプトによって実行される Process.Start("selenumRC commandline") を実行する単純な .NET アプリを作成する場合はどうでしょうか。

Selenium のルートにあまり慣れていない場合。同様の .NET ブラウザー自動化ツールを検討することをお勧めします。特にWatiNまたはArtOfTest。これらの「スタック」は完全に .NET であるため、異なるマシンで実行するのははるかに簡単です。

于 2008-09-19T09:06:53.333 に答える