2012-02-14 5 views
5

NUnitのエンドツーエンドテストが失敗し、私が書いている次のサービスメッセージ(here)を使用してTeamCity(ビルドエージェントとサーバーの両方をWindows上で実行している)で公開しようとしています。 NUnitのテストからConsole.WriteLineで:TeamCityにpublishArtifactsサービスメッセージを使用してビルド中に公開されたアーティファクトが表示されないのはなぜですか?

------- Stdout: ------- 
##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png'] 

しかし、チームシティーは、ファイルを拾っていない、あるいは少なくともそれはビルドに表示されない:

##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png'] 

私は、ビルドログの行を参照してください人工物。この仕事をするにはどうすればいいですか?

+1

は、それはあなたのメッセージがエスケープされなければならないいくつかの文字が含まれている可能性があります/confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ServiceMessages? –

+0

いいえ、 ':'と '\\'がOKである限り、それは問題ではありません。 – GraemeF

答えて

0

相対パスを使用してください。 Teamcityはビルド作業ディレクトリに対してそれらを解決する必要があります。

0

Console.WriteLine(下記参照)の代わりにConsole.Writeを試すことができます。

とにかく、TeamCityは「テストレポート」であり、ビルドログにテキスト出力として追加されているため、これらのメッセージをトラップしないと思います。

私は、ビルドログに書き込まれる方法のために、構文解析されずに[スクリプトの相互作用の作成]動作によって解釈されないと感じています。

サービスメッセージは、ビルドスクリプトから チームシティーサーバに情報を構築/コマンドを渡すために使用されています。Build Script Interaction(TC 7)から

。 TeamCityで処理するには、 ビルドの標準出力ストリームに出力する必要があります(そうでない場合、出力がサービスメッセージ構文でない場合は、 がビルドログに表示されます)。 単一サービスのメッセージには、 に改行文字を含めないでください。 複数の行にまたがってはいけません

テスト成果物を特定のフォルダに配置し、テスト後に公開を延期する必要があります。

アーチファクトを動的に解決する必要がない場合は、最も簡単な方法を使用してください:Artifact pathsビルド構成の一般設定。

+0

'Console.WriteLine'は、サービスメッセージの後ろに改行*を追加するので、問題はありません。見積もりが示すように、サービスメッセージはビルドの標準出力ストリームに書き込まれるだけで、フラッシュされる方法は無関係です。残念ながら、私はプロジェクトにアクセスして何も他のものを試すことはできません:( – GraemeF

+0

試してみるのはWriteLineについてのことですが、それは私のTCでもうまくいきません。NUnit出力のフラッシュについては、**テスト出力は標準出力ではない**ので、すべてのテストフレームワークは独自のコンソールリスナを追加するので、それはまったく重要ではありません。 'nunit-console.exe'を実行すると、あなたのテストの' WriteLine'が何とか一括して現れることがわかります。また、TeamCityは独自のNUnitランナーを使用します。あなたが試しているものは、MSTestでも動作しないことに注意してください。テスト名の後で出力前に '[Test Output]'のようなものが見えますが、このテキストのために失敗する可能性があります。おそらくバグでしょうか? – JoeBilly

関連する問題