レガシーWebサイトで単体テストを実装する
-
22-07-2019 - |
質問
nUnitとTestDriven.netをダウンロードしました。レガシーWebサイトアプリケーションがあり、いくつかの単体テストを実装したいと思います。 app_codeフォルダーにクラスを作成し、Imports NUnit.Frameworkなどを追加しました。基本的なテストを作成した後、「Webサイト」アプリケーションでテストを実行できません」というメッセージが表示されます。エラー。 Webサイトプロジェクトはサポートされていません。現時点では、Webアプリケーションへの変換はオプションではありません。 Visual Studio Test Editionがあるので、そのルートを試しました。テストプロジェクトを作成し、テストクラスなどでいくつかのテストを作成しました。Webサイトプロジェクトのapp_codeフォルダー内のクラスを参照できないことを確認するためだけです。誰かが私にいくつかのポインタを与えることができますか?私は何か間違ったことをしていますか。私はTDDが初めてです。このアプリケーションに少しテストを適切に実装したいだけです。
事前に感謝します、 〜ck in San Diego
解決
特にWebサイトを使用している場合は、単体テスト用に別のプロジェクトを作成します。
おそらく、Webサイトのクラスを単体テストするべきではありません。むしろ、単体テストを行いたいクラスは、おそらくWebサイトにあるべきではありません。むしろ、Webサイトで参照されるクラスライブラリプロジェクトにある必要があります。
これは、Webサイトを使用しないもう1つの理由です。Webサイトは使用されるまでコンパイルされないため、テストするテストプロジェクトのapp_codeにはコードのコンパイルされたバージョンがありません。
Webサイトは、単純なWebサイト以外には使用しないでください。それ以外のものは、意図したよりも洗練されています。代わりにWebアプリケーションプロジェクトを使用します(ただし、プロジェクトから興味深いコードを保持する必要があります)。
他のヒント
John Saundersには適切なアドバイスがあると思います。 Webサイトのプレゼンテーション層を試し、ビジネスロジックを構成するクラスをテスト用の別のライブラリに分離します。これにより、クラスが実装する予定のプロセスのみに集中できます。
だから、nUnitでTDDを始めてから、主要なプロジェクトにMSテストスイートを使用しました。それははるかに高速だったので、私はMSよりもnUnitを選んだでしょう。