2010-12-28 11 views
1

プロジェクトA - Webアプリケーション/ Webサイト
プロジェクトB - ユニットテストアプリケーションのVisual Studio 2010のユニットテスト

それはincrementCounter(ByRef nCounter As Integer)またはgetSquare(ByVal nValue As Integer)ような何かがいた場合、私は複数のプロジェクトでユニットテストを行うにはどのようによく知っています。しかし、私は、プロジェクトAで関数を呼び出し、テーブルの新しいレコードを検証するプロジェクトBでユニットテストを作成するよう求められています。私の問題は私がそうするとき、それは正常に構築されますが、(configファイルを使用して)データベースに接続しようとするとランタイム例外があります。私の質問は、プロジェクトAにあるプロジェクトBに同じ設定ファイルを持たなければならないのか、それともこの方法でウェブサイトの機能をユニットテストできないのでしょうか?

私はユニットテストをプロジェクトAに入れたいと思っていますが、現時点では(ボスは休暇中で、到達不能です)、これを行う承認はありません。私は、関数がユニットテストやブラウザを介して呼び出されているかどうかを調べるために条件文を使用しましたが、それは必要以上に機能するかもしれません。すべての助けをいただければ幸いです。ありがとう。

UPDATE 私は取得しています実際のエラーがある...私はそれだけの設定だかどうかを確認するつもりだ

Class.Function-->The key 'OraConnection.ConnectionString' does not exist in the appSettings Configuration section. 

それは私ので、app.configファイルにだ場合それを他のプロジェクトにコピーしましたが、まだエラーが発生しています。ありがとう。

UPDATE 2
もう少し周りを見た後、プロジェクトAは、クラスライブラリです。しかし、私は同僚と話をし、web.configファイルは起動時にapp.configファイルに設定されているものをロードすることを知らせてくれました。また、私が持っているapp.configファイルのどれもがデータベース接続を持っているように見えないので、ソーシングの問題(または隠された状態を保つための巧妙な方法)のように思えます。私は適切に設定されたapp.configファイルを見つけようとしていて、それからテストします。みんな、ありがとう。

+0

プロジェクトを1つのプロジェクトから別のプロジェクトに渡すことは、定義上、単体テストではありません。統合テストです。これは、一歩踏み込んでテストが近づいているプロセスを見て、現時点では非常に臨時のようにあなたのチームメートと上司に洞察を提供する良い機会かもしれません。 –

+0

:)それはまさに他の同僚が私に言ったことです。私は単にファイルを使用するために単体テストと呼んでいて、ファイルを持ってほしいと思っているプロジェクトです。そうでなければ、私は間違いなくそれを統合テストと呼んでいます。ありがとう。 – XstreamINsanity

+0

これは、プレゼンテーションコードからデータベースコードを分離する理由の完全な例です。このデータベースコードはWebサイトの一部であってはなりません。それは別のクラスライブラリになければなりません。これにより、テストが容易になります。 –

答えて

0

テストプロジェクトの設定ファイルを使用します。したがって、テストを含むプロジェクトの設定ファイルに接続文字列を配置する必要があります。

また、この質問への回答を参照してください。Can someone provide a quick App.config/Web.config tutorial?

+0

それでは、私はこの質問をしてくれます:私が(Unit Testプロジェクトから)関数を呼び出すプロジェクトでは、web.configファイルまたはapp.configファイルが必要です。この機能はウェブサイトからのものですが、ウェブサイト以外のプロジェクトで呼び出されています。リンクありがとう。 – XstreamINsanity

+0

はい、あなたのテストプロジェクトにはapp.configファイルが必要です –

+0

申し訳ありません、私はまもなくそれを試してみましょう。助けてくれてありがとう。 – XstreamINsanity

0

大きな問題がA.をプロジェクトにプロジェクトBの話は、プロジェクトAはプロジェクトBで参照されたDLL方法ですんされ、またはプロジェクトAは、サービスのいくつかの種類であります別々に実行する必要があります。最初のケースであれば、このエラーが発生することはありません。 2番目の場合は、プロジェクトBでユニットテストを実行するときにプロジェクトAが実行されていることを確認する必要があります。

+0

これは第2のケースです。プロジェクトAはウェブサイトです。私はプロジェクトBでそれを参照しています。私は他の答えを試してみると、それが動作するかどうかを見てみましょう。 – XstreamINsanity

0

これはおそらくあなたの質問にはうまく答えませんが、論理の大半はビジネス層と単体テストにテストされます。 CRUDにEntity Frameworkを使用していても、モデルをビジネス(またはデータなどの)層に配置し、ユニットが機能をテストできます。

今はEF 4を使用してaspx/silverlightアプリケーションを開発しており、モデルとドメインサービスをビジネスプロジェクトに持っています。これにより、テストが簡単になるだけでなく、Webとサーバー上で実行されている別のWindowsサービスとの間で同じロジックを共有できます。

関連する問題