10

大規模な Delphi プロジェクト (150 万行のコード) があり、アジャイル プロセスの使用に移行しています。

継続的インテグレーション環境 (FinalBuilder) は既にありますが、これを更新して、開発チームの全員に電子メールで単体テスト (dUnit) とコード メトリック (CodeHealer) を含めました。私たちの単体テストのカバレッジはあまりよくないので、すべてのビルドでテスト カバレッジの結果を得るために、AQtime をミックスに入れようとしています。

「プログラムの実行」タスクを使用して単体テストの実行可能ファイルを実行し、結果をログに記録し、その後ファイルを解析しています。「スクリプトの実行」タスクを使用して (COM 経由で) AQtime を実行し、結果を XML にエクスポートして、それらの結果を解析できるようにします。

私が抱えている問題は、単体テスト実行可能ファイルを実行している AQtime にあり、単体テスト実行可能ファイルを直接監視する機能を失います。FinalBuilder に両方のタスクの結果を解析させたいと思います。AQtime から呼び出されたときに dUnit の結果にアクセスする方法を知っている人はいますか?

4

2 に答える 2

7

これと同じパスを実行しましたが、AQTimeからDUnitテストを実行していません。

代わりに、FinalBuilderを使用してDunitテストをビルドして実行します。

単体テストではXmlTestRunnerを使用します。その後、結果のXMLファイルでXPathクエリを使用して、テストが失敗したかどうかを簡単に知ることができます。

更新: FinalBuilder 7.0の最近の更新で、DUnitがサポートされるようになりました。これは、インストール後にFinalBuilderディレクトリの下にある独自のXMLTestrunner.pasを介して行われます。このランナーは、テスト結果をNUnitと同じ形式で出力します。その後、FinalBuilderサーバーに非常にうまく統合されます。

于 2010-02-25T20:26:52.400 に答える
2

あなたは、私たちがゆっくりと進化しているセットアップについて説明しています。

  • DUnit テストは、TextTestRunner ユニットで定義された TTextTestListener を使用してコンソール アプリケーションとしてコンパイルされます
  • CI サーバーは、すべてのプロジェクトをビルドし、すべてのテストを実行する cmd スクリプトです。
  • テストの出力はファイルにパイプされます。

解決策は、AQTime でこれらのコンソール アプリケーションをプロファイリングする一方で、後で解析できるファイルに結果をパイプできるようにすることでしょうか?!

もう 1 つの解決策は、独自の TestListener オブジェクトを実装し、そのオブジェクトにテスト結果をイベント ログ、直接ログ ファイル、データベース、または任意の場所に書き込み、FinalBuilder で取得させることです。

プロジェクトファイルにこのようなものを入れる代わりに

  Application.Initialize;
  if System.IsConsole then TextTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;

このようなものになるでしょう

  Application.Initialize;
  if System.IsConsole then OurEventLogTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;
于 2010-02-22T15:08:14.833 に答える