3

SpecFlowを使用してコンソールアプリをテストしたいと思います。SpecFlowでコンソールアプリを起動し、ユーザーが標準の入出力を介して行うのとまったく同じ方法でコンソールアプリを操作するようにします。

これは可能ですか?

4

1 に答える 1

3

はい、実際、私は現在、そのようなソリューションを1つ自分のマシンで開いています。私のアドバイスは「やらないで!」です。

ソリューションを開くと、nCrunch(これは単に非常に効率的なテストランナーです)が、複数のサーバーを調整するために使用するスケジューリングシステムのいくつかのテストを開始します。これらのテストの一部は、タイムスケールをチェックし、プロセスが想定どおりに開始および停止することを確認します。これは、何かを入力しようとするたびに、フォーカスを奪うためにcalc.exeウィンドウがポップアップし、それが本当に邪魔になるためです。それはあなたが本当にやりたいことですか?

SpecFlowは実際にはビジネス要件の自動化システムであり、これは「良いこと」であることを忘れないでください。しかし、これまでのところ、ここでは技術的な問題にのみ焦点を当ててきました。

要件についてもう一度考えてみることをお勧めします。プロセスを開始し、それが自分と相互作用することを確認したい場合は、その引数と結果をテストするだけです。その機能を分離する必要がある場合は、モックを使用します(テストを作成したときに実行しなかったように、おっと)。テストをできるだけ簡単にしてみてください。

このように考えてください。-本当にそのProcess.Startをテストする必要がありますか?ウィンドウが開きますか?確かにMSはそれを正しく理解しましたか?:-)-Console.ReadLineが文字列を取得することを本当にテストする必要がありますか?-そして、モックを分割してMyArgumentParserとMyBusinessLogicを別々にテストすると、テストが簡単になりませんか?

于 2012-12-03T13:40:37.993 に答える