自作のテストアプリケーションを標準の単体テストフレームワークに変換する
-
05-07-2019 - |
質問
ソフトウェア用に作成されたテストがたくさんあります(これは素晴らしいことです)が、基本的にC#のスタンドアロンテストとして構築されました。これは十分に機能しますが、いくつかの欠点に悩まされていますが、少なくとも、標準のテストフレームワークを使用していないため、テストを実行する必要のないテストの呼び出しをコメントアウトする必要があります(テスト「スイート」全体の実行が望ましくない場合)。自動テストプロセスに組み込みたい。
VS 2008のTest Editionには「汎用テスト」という概念があり、私が望むものを実行できることがわかりましたが、現在、そのバージョンにお金を費やすことはできません。最近、VS 2008 Proバージョンの使用を開始しました。
これらのテスト方法はおなじみのパターンに従っています:
- テストのセットアップを行います。
- テストを実行します。
- 次のテストのためにリセットします。
それぞれがブール値(成功/失敗)と失敗した理由への文字列参照を返し、失敗した場合は記入されます。
明るい面では、少なくともテスト方法は一貫しています。
私は今夜ここに座って、明日の朝にこのテストコードをすべてテストフレームワークに移行するためのアプローチを考えています。手で変換を行います。
このような変換を行った経験はありますか?ヒントはありますか?グローバルな検索/置換をすべて実行し、テストを手動で変更することで、私はそれを突き詰めて行き詰まっているのではないかと思います。
何か考えはありますか
解決
NUnitを使用する場合(必要な場合)、現在のテストメソッドごとに新しいテストメソッドを作成する必要があります。 NUnitはリフレクションを使用して、 [Test]
属性でマークされたメソッドのテストクラスを照会します。これにより、UIに表示されるテストのリストが作成され、テストクラスはNUnit < code> Assert メソッドを使用して、成功したか失敗したかを示します。
あなたのテストメソッドがあなたが言うように一貫していれば、それらのNUnitメソッドはすべてこのように見えるでしょう:
[Test]
public void MyTest()
{
string msg;
bool result = OldTestClass.MyTest(out msg);
if (!result)
{
Console.WriteLine(msg);
}
Assert.AreEqual(result, true);
}
それが機能するようになったら、次のステップは、リフレクションを使用して古いテストクラスのすべてのテストメソッド名を取得し、元のそれぞれのNUnitメソッドを持つ.csファイルを生成するプログラムを作成することですテスト方法。
いらいらするかもしれませんが、それほど苦痛ではありません。また、必要なのは一度だけです。
他のヒント
「予防のオンスは1ポンドの治療に値する」というイディオムを経験しようとしています。特にプログラミングに当てはまります。
NUnitについては何も言及していません(2008年にMicrosoftが購入したと思いますが、私はそれを支持しません)。そもそもNUnitを使用しなかったという特別な理由はありますか?