1

このメッセージは、私が現在直面している問題に関するものです。以下の特定の手順では、私が取り組んでいることと行き詰まった場所のプロセスについて説明します。

  1. Visual Studio 2010 経由で Telerik テスト スタジオで機能テスト ケースを作成しました
  2. Nunit Unit テスト ケースに変換しました。
  3. 作成された Nunit テスト ケースは、Nunit ランナー (CI) を介して Bamboo Continuous Integration Server に接続されました。
  4. CI サーバーに接続すると、Telerik テスト スタジオの Nunit プロジェクトが機能しない
  5. バグが検出されました:-

バグログはこちら。

System.NullReferenceException : オブジェクト参照がオブジェクトのインスタンスに設定されていません。

エラーと失敗:

テスト エラー: NUnitLoginTest.WebTest1UnitTest.SampleWebAiiTest System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。ArtOfTest.WebAii.Core.Manager.SetupDialogMonitoring() で ArtOfTest.WebAii.Core.Manager.LaunchNewBrowser (BrowserType browserToLaunch、Boolean waitForBrowserToConnect、ProcessWindowStyle windowStyle、文字列引数) で ArtOfTest.WebAii.Core.Manager.LaunchNewBrowser(BrowserType browserToLaunch) でE:\Anu\Payroll\virtual\NUnitLoginTest\NUnitLoginTest\WebTest1UnitTest.cs:line 140 の NUnitLoginTest.WebTest1UnitTest.SampleWebAiiTest()

注: ローカル マシンでテストを実行すると、同じエラーが発生します。そして、コンソールを使用して Bamboo を起動しています。

Windowsサービスで「デスクトップとの対話をサービスに許可する」を有効にしようとしました。

4

1 に答える 1

0

Bamboo をコンソール モードで実行する必要があることは間違いありません。まだ発見していない場合は、UI テストを実行するには、UI テスト マシンにアクティブなデスクトップが必要です。私たちのウォールボード マシンは、大きなウォール モニターから遠く離れたクローゼットの中にあり、たまたま何にも使用されていないパネルがありました。今では、リモート デスクトップ経由で常に UI テスト マシンがアクティブになっています。

私はあなたが少し違うことを試みていることを実装しました。私は、ビルド サーバーの管理も行うソフトウェア開発者です。私たちのテスト チームは Telerik Test Studio を使用しており、数時間ごとに一連の UI テストを実行する最も簡単な方法を求めていました。上記のビルド マシンの 1 つが現在、これを担当しており、Test Studio の ArtOfTest.Runner 部分がインストールされています。

私たちのテスターはテスト リスト機能 (mytests.aiilist) を使用していますが、これは単一のテスト (mytest.tstest) でも機能することがわかっています。プロジェクトが Visual Studio にエクスポートされたのは 1 回だけです。その後、テストをビルドしてテスト リストに追加するだけです。彼らのソリューション全体はソース管理にあります。すべてのコンポーネントの bin デプロイ用に vs プロジェクトを変更して、すべての dll がビルド マシンに確実に到達するようにしました。

ArtOfTest.Runner のインストール手順に従うと、任意のパスから実行できるようになります。ビルド マシンでこれを試してください: [AnyPath]\ArtOfTest.Runner C:[テストまたはリスト ファイルへのフル パス]

あなたがそれを機能させることができれば、あなたはそこに1/2の方法があります.

これを Bamboo で開始するには、次のようにします。

  1. ソース管理からプロジェクト全体をチェックアウトする
  2. ビルドします(dllがビンに入るのを確認してください)
  3. NAnt スクリプトを使用してテストを起動する

NAnt スクリプトが最初に使用された理由は、パスが常に同じかどうかわからず、計算する必要があったためです。私たちは常にパスを知っていますが、それでも物事はより簡単になります。

Bamboo タスクの構成:

Executable: NAnt
Build File: [Relative path from root of project]\RunMyTestList.build
Targets: all
Environment Variable: LIST="OneSetOfTests.aiilist"

RunMyTestList.build NAnt スクリプトは次のようになります。

<?xml version="1.0"?>
<project default="all">
    <property name="ArtOfTest.Executable" value="ArtOfTest.Runner.exe" />
    <property name="ArtOfTest.ListFile" value="${path::get-full-path(environment::get-variable('LIST'))}" />
    <property name="returncode" value="" />
    <target name="all">
        <echo message="Start ArtOfTest.Runner: ${ArtOfTest.ListFile}" />
        <exec program="${ArtOfTest.Executable}"
                resultproperty="returncode"
                commandline="list=&quot;${ArtOfTest.ListFile}&quot;"
                failonerror="true"/>
        <echo message="Finish ArtOfTest.Runner: ${returncode}"/>
    </target>
</project>

これでテストが実行されます。しかし、ビルドの成功または失敗のみが得られ、Bamboo からの詳細なリストは得られません。これは、実際にはテストではなく NAnt スクリプトであるためです。しかし、これは結果的に幸いでした。ArtOfTest.Runner は、どの単体テスト ログよりも優れた、非常に優れた結果ファイルを書き込みます。通常はアクセスできないテスターとビルド マシンの結果フォルダーを共有する必要がありましたが、テスト スタジオでその共有をマップして結果ファイルを開き、段階的なスクリーン キャプチャーを表示することもできるようになりました。

この構成が完璧だとは思わないので、おそらくもっと調整するでしょう。私たちの重要な項目は、すべてのビルド、テスト、および展開に Bamboo を使用することでした。そのため、UI テストを開始するために他のものを使用することに関心はありませんでした。これまでのところ、誰もがとても幸せです。私が助けてくれることを願っています。

于 2013-02-19T23:53:55.590 に答える