2

私はソフトウェアのために書かれた多くのテストを持っています (これは素晴らしいことです) が、それは本質的に C# のスタンドアロン テストとして構築されました。これは十分に機能しますが、いくつかの欠点があります。特に、標準のテスト フレームワークを使用しておらず、テストを実行する人が、実行してはならないテストへの呼び出しをコメントアウトする必要があります。 (テスト「スイート」全体を実行することが望ましくない場合)。自動化されたテスト プロセスに組み込みたいと考えています。

VS 2008 のテスト エディションには、私が望むことを実行できる「汎用テスト」の概念があることがわかりましたが、現在、そのバージョンにお金を費やす立場にはありません。最近、VS 2008 Pro バージョンを使い始めました。

これらのテスト方法は、おなじみのパターンに従います。

  • テスト用のセットアップを行います。
  • テストを実行します。
  • 次のテストのためにリセットします。

それぞれが bool (合格/不合格) と文字列 ref を失敗の理由に返し、失敗した場合は入力されます。

明るい面では、少なくともテスト方法は一貫しています。

私は今夜​​ここに座って、明日の朝にこのすべてのテスト コードをテスト フレームワークに移行する方法を考えています。変換を行います。

そのような変換を行った経験はありますか? ヒントはありますか?グローバルな検索/置換を行ったり、テストを手作業で変更したりするのに苦労しているかもしれません。

何かご意見は?

4

2 に答える 2

4

NUnit を使用する場合 (そうするべきです)、現在のテスト メソッドごとに新しいテスト メソッドを作成する必要があります。NUnit はリフレクションを使用して、[Test]属性でマークされたメソッドのテスト クラスをクエリします。これは、UI に表示されるテストのリストを構築する方法であり、テスト クラスは NUnitAssertメソッドを使用して、合格したか失敗したかを示します。

あなたのテストメソッドがあなたが言うように一貫していれば、それらの NUnit メソッドはすべて次のようになります。

[Test]
public void MyTest()
{
   string msg;
   bool result = OldTestClass.MyTest(out msg);
   if (!result)
   {
      Console.WriteLine(msg);
   }
   Assert.AreEqual(result, true);

}

それが機能するようになったら、次のステップは、リフレクションを使用して古いテスト クラスのすべてのテスト メソッド名を取得し、元のテスト メソッドごとに NUnit メソッドを含む .cs ファイルを生成するプログラムを作成することです。

うるさいかもしれませんが、それほど苦痛ではありません。そして、あなたは一度だけそれをする必要があります.

于 2008-10-08T00:44:07.473 に答える
1

あなたは、「1 オンスの予防は 1 ポンドの治療に値する」というイディオムを生きようとしています。プログラミングでは特にそうです。

あなたはNUnitについて言及していません(これは2008年にMicrosoftによって購入されたと思いますが、私を拘束しないでください)。そもそも NUnit を使用しなかった特定の理由はありますか?

于 2008-10-08T00:37:47.140 に答える