2011-06-29 6 views
3

私はAPIドキュメントシステムを開発しており、各コマンドにドキュメントが添付されていることを動的にチェックしたいと考えています。 これを行う最も簡単な方法は、各コマンドを動的にループし、それに一致する既存のドキュメントをチェックすることです。PHPUnitの特定のテストで 'Stop On Failure/Error'をオフにする方法はありますか?

私のコードは次のようになります。

public function testMissingDocs() 
{ 
    foreach ($aCommands as $sKey => $aOptions) 
    { 
     $this->assertNotNull($oDocs->get($sKey)); 
    } 
} 

これに伴う問題は、最初のアサーションが失敗した後にテストを停止したPHPUnitのStopOnFailure /エラー機能です。私はこの機能の理由を理解しており、大部分のテストケースでそれを維持したいのですが、動的なアサーション/テストでは少し難しくなります。

このテストで各コマンドを確認できるように、テストごとに無効にする方法はありますか?

答えて

6

data providerを使用すると、単一のテストをコマンドと同じ数のテストに分割できます。

+0

素晴らしい、それはうまく仕事をするでしょう。ありがとうございました。 –

+0

クールな機能私は知らなかった –

1

特定のクラスまたはメソッドのドキュメントが見つからない場合は、そのクラスの問題を表し、ドキュメントを取得するメソッドではありません。

単体テストのベストプラクティスに従わないため、すべてのドキュメントを1つのテストにまとめるほうが簡単かもしれませんが、PHPUnitフレームワークがあなたのためではなくあなたのために働いています。

私はこの問題を是正するために、2つのいずれかの方法をお勧めします:各クラスおよび/または方法は、独自のドキュメントチェックを(あなたがrun multiple tests in one executionことができますいくつかの方法がある)となるように

  1. は、あなたのテストをリファクタリング
  2. 代わりにPHP_CodeSnifferなどのツールを使用してください。ドキュメントの不足は、機能的な欠陥ではなく、従来のものとみなすことができます。
+0

私の目標は、開発者がAPIコマンドのドキュメントを追加することを忘れた場合の自動警告システムを構築することです。ドキュメントをチェックするテストを手作業で書かなければならないということは、ドキュメント自体を書く時間と同じです。 –

+0

PHP_CodeSniffer imhoあなたの仕事に最適なツール@Valorin。それはあなたがあなた自身のためにそれを書く必要なく、ドキュメントブロックが見つからないことについて自動的に不平を言うでしょう。 (Ab)これにもPHPUnitを使用すると動作しますが、提案は間違いなく有効です:) – edorian

+0

ああ!私はコード内のドキュメンテーションについて話しているわけではありません。私はユーザーのドキュメンテーションについて話しています。基本的には、各コマンドのドキュメントを含む.iniファイルがあり、コマンドとドキュメンテーションに基づいてHTMLドキュメントページを自動的に生成するインターフェイスがあります。 .iniファイルに保存します。 –

関連する問題