2

この件に関する以前の投稿が役に立ちました ( TestExecute/TestComplete の結果を teamcity にエクスポートする方法を参照してください) 。

現在、TestComplete ソリューションは、メッセージを TeamCity に送り返す Microsoft.Build.Utilities.Task ヘルパーで MSBuild が消費するテキスト ファイルを作成します。しかし、私たちはもっとうまくやれるかどうか疑問に思っています。

TeamCity ヘルプ トピック ( http://confluence.jetbrains.com/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ServiceMessages ) には、メッセージは「ビルドの標準出力ストリームに出力する必要がある」と記載されています。私が理解しようとしているのは、TestComplete スクリプトからそのストリームに直接アクセスできるかということです。

dotNET.System.Console.WriteLine_11("##teamCity[testSuiteStarted name='Foo']"); のような単純なものになることを期待していました。

しかし、それは明らかに正しい出力ストリームを提供していません。考え?それはできますか?

4

3 に答える 3

0

TeamCity と TestComplete も使用しています。私はまったく同じ問題に遭遇しました.何をしようとしてもコンソールに書き込むことはできません.少なくとも私が見つけたものではありません. TestComplete で CLR ブリッジを使用して対話する C# アプリを作成しようとしましたが、それでも何もしませんでした。

最終的に行ったことは、TestExecute 呼び出しを処理するバッチ ファイルを作成することでした。次に、TeamCity からバッチ ファイルを呼び出します。TestExecute を呼び出すには、これを使用します (テストに固有の pjs ファイルと /p を使用):

start /wait TestExecute "{TestCaseID}.pjs" /r /e /p:"{TestCaseID}" /silentmode /forceconversion

次に、TestExecute によって返される ERRORLEVEL プロパティを確認します。レベル 2 は、テストの実行が失敗したことを意味します。その場合、echo ステートメントを使用して以下を出力します。

##teamcity[testFailed name='{TestCaseID} - {TestName}' message='TestExecute reported a failure' details='See artifacts']

TestExecute が閉じた後、ログ ファイルを開こうとします。mht ファイルは開くのに時間がかかるため、電卓で開くようにビルド サーバーを設定しています (Windows の右クリック -> [プログラムから開く] メニューで既定値として設定します)。したがって、TestExecute が完了すると、電卓が開き、バッチ ファイルは taskkill を使用して電卓を強制終了します。

次に、結果ファイルを TestExecute から指定された場所にコピーします (これは、作成した別の実行可能ファイルです)。テストの実行を終了し、アーティファクトを TestExecute に発行します。

echo ##teamcity[testFinished name='{TestCaseID} - {TestName}' duration='%milliSecondsElapsed%']
echo ##teamcity[publishArtifacts 'C:\BuildResults\{GroupName}\{TestCaseID}\*.mht']

注意すべき点: TestExecute で一度に 1 つのテストを確実に実行することはできなかったので、実際にはテスト ケースのリストを使用して、テスト ケースごとに個別の pjs ファイルと mds ファイルを生成します。次に、生成された pjs および mds ファイルを TestExecute で使用します。これが、上記の {GroupName}、{TestCaseID}、および {TestName} 変数の由来です。これらは実装に固有のものですが、別のインジケーターが必要になる場合があります。

お役に立てれば!

于 2013-12-19T14:59:48.443 に答える