2

MonoDevelop/.Net で単体テストを自動的に生成しようとしています。

NUnit を試しましたが、テストが生成されません。Eclipse では、プラグインのrandoopがこれを行いますが、Java と JUnit を対象としています。

MonoDevelop や .Net で単体テストを自動生成するにはどうすればよいですか? あるいは、私が知らない既存のツールがあるかもしれません...

4

1 に答える 1

8

異なる (ランダムな) 入力でメソッドを呼び出すことは、プロセスの一部にすぎません。また、入力ごとに正しい結果を定義する必要がありますが、ツールでそれができるとは思いません。

randoop は の非常に基本的なプロパティをほとんどチェックしないようですequal。これはあまり役に立ちません。また、正しいという誤った印象につながる可能性があります (「見てください、すべてのテストに合格しました。私のソフトウェアは問題ありません」...)

また、コード (および入力) をランダムに生成するだけでは、テスト結果が不確定になるリスクがあります。コードの欠陥を実際に検出するテストを取得する場合と取得しない場合があります。

とはいえ、簡単なグーグル検索により、次のアプローチの開始点が得られました。

  • テスト ケース ジェネレーターの使用に興味があるかもしれません (このCodeProject の記事では、非常に単純なものについて説明しています)。彼らは「ボイラープレート」コードの生成をサポートし、テストしたいクラス/メソッドを見逃さないようにします。もちろん、生成されたテストは、適切な (意味のある) 入力値と (正しい) 出力値を定義することによって適合させる必要があります。「NUnit Test generators」をグーグルで検索すると、商用ソフトウェアの他のリンクも表示されますが、ここでは繰り返しません...
  • NUnit (およびその他のテスト フレームワーク) は、パラメーター化されたテストをサポートしています。これらは、入力シナリオのクラス全体をテストするために使用できます。NUnit の場合、メソッドのランダムな入力 (特定の範囲内) を生成できるRandom属性を見つけました。ランダムなテスト入力について上で書いたことを思い出してください。これらのテストの結果は再現性がなく、自動または回帰テストには役に立たなくなります。

そうは言っても、この質問(および確かにSOに関する他の質問)も見てください。これは、自動ユニットテスト生成に対する私の議論を支持するかもしれません。

于 2012-11-27T20:40:08.170 に答える