2011-02-09 7 views
2

私のテストプロジェクトは、レガシーのサードパーティ製ソフトウェアに入力される一連の入力データファイルで構成されています。このソフトウェアの入力データファイルは構築するのが難しいため(意図的に行うことはできません)、新しい入力データファイルを追加するつもりはありません。データドリブンテストのためのNUnit GUIのカスタマイズ

各入力データファイルには、一連の「テスト機能」が適用されます。いくつかのテスト関数は独立して呼び出すことができます。他のテスト機能は、順次操作の段階を表します。早期段階で障害が発生した場合、後続段階を実行する必要はありません。

私はNUnitのパラメータ化されたテストケース(TestCaseAttributeとTestCaseSourceAttribute)をテストケースとしてデータファイルのリストに渡して実験しました。私は一般に、テストのために入力データを選択する能力に満足しています。

しかし、「テスト関数」が「入力データ」の子になるようにGUIのツリー構造をカスタマイズすることができるかどうかを確認したいと思います。たとえば、次のように

  • ファイル#1
    • CheckFileTypeTest
    • GetFileTopLevelStructureTest
    • CompleteProcessTest
      • StageOneTest
      • StageTwoTest
      • StageThreeTest
  • ファイル#2
    • CheckFileTypeTest
    • GetFileTopLevelStructureTest
    • CompleteProcessTest
      • StageOneTest
      • StageTwoTest
      • StageThreeTest

これは、特定の入力ファイルの処理中に障害が発生した段階を同定するために有用であろう。

新しいツリーレイアウトを有効にするヒントはありますか?このレイアウトを取得するにはNUnitをカスタマイズする必要がありますか?

編集:テストデータとテストコードの分離の概念については、Term for unit testing that separates test logic from test result dataをご参照ください。私の状況では、分離は理想的な理由ではなく、実用的な懸念によって推進されます。テストデータファイルのソースは「野生の中」です。

データ駆動型テストの他の逸話使用:

+0

確かにNUnitのGUIはカスタマイズを全く提供していません(あるいは、それは非常に限られています)。あなたは自分で書く必要があります。 –

+0

GUIのテストでは、友人ではなく、あなたの敵です:)しかし、あなたができることは、テストが終了した後にXML出力を変換し、うまくフォーマットされたHTMLに吐き出すことです。私はいくつかのテストを隠すためにこれを前にやっています。名前の変更などです。ところで、http://www.gallio.org/ + MbUnitはNUnitよりも優れています。私は誓います! –

+0

@rwongこれをStackOverflowに移行します。この質問はProgrammers.SEにとってあまりにも客観的です。あなたはおそらくそこで答えを得る良いチャンスがあります。 –

答えて

0

おそらく、まさにこのような構造をモデル化することができるようにするつもりはありません。テストはTestFixtures(クラス)内にのみ存在することができ、GUI内の任意のレベルをネストすることを可能にする唯一のものは名前空間です。あなたは何ができるか

はこれです:

* File001 (namespace) 
    * Tests_File001 (class, text fixture) 
    * CheckFileTypeTest (method, test) 
    * GetFileTopLevelStructureTest (method, test) 
    * CompleteProcessTest (namespace) 
    * TestsCompleteProcessTest (class, text fixture) 
     * StageOneTest (method, test) 
     * StageTwoTest (method, test) 
     * StageThreeTest (method, test) 

私はあなたが現在、一つの試験方法は、特定のものをチェックし、あなたがそのテストを実行

[Test] 
[TestCaseSource("TestFiles")] 
public void StageOneTest(String file) 
{ 
} 

の線に沿ってより多くのセットアップを持っていると仮定しますすべてのファイルに対してその場合は、属性を削除して新しいテストからこのメソッドを呼び出すだけです。

また、テストを特定の順序で実行し、さまざまなテストランナーがさまざまな順序でテストを実行するように感じることもあります。私はそれを行う方法を知らないし、一般的に言ってはいけません。テストは成功した別のテストに依存してはならない。

「以前の」テストが既に失敗した場合、「後の」テストをすべて実行したくない場合、「予備」、「ステージ1」などの適切なカテゴリに配置することを検討できます。 "など。そして、あるカテゴリーを他のカテゴリーの後に実行し、最初のカテゴリーがどこで失敗するかを見ることができます。

私はこれがあなたを助けてくれることを願っています。

関連する問題