0

Web>サービス>コアの3つのレイヤーを持つWebアプリケーションがあります。Services.Tests単体テストプロジェクトを追加したばかりで、開始方法を理解しようとしています。

Services.TestsプロジェクトからServicesプロジェクトへの参照を追加しました。次に、TestクラスにServices.serviceクラスのインスタンスを作成しました。

[TestClass]
public class CrudTests
{
    private readonly SetServices _setService = new SetServices();

    [TestMethod]
    public void TestMethod()
    {

_setServiceしかし、コアプロジェクトへの参照が必要である というエラーが発生しました。

最初の質問:サービスプロジェクトがすでにコアプロジェクトを参照しているのに、なぜコアプロジェクトを参照する必要があるのですか?

参照を追加して、合格した空のテストを実行しました。次に、サービスクラス内の基本的なメソッドの1つを呼び出そうとしました。

[TestMethod]
public void TestMethod()
{
    _setService.CreateSet("Test Set", "Test Set Details", null);

しかし、私はを取得しproviderIncompatileExceptionます。

2番目の質問:専用のテストデータベースを作成/使用するための推奨される方法は何ですか?

3番目の質問:どのデータベースを使用するかをテストプロジェクトに指示するにはどうすればよいですか?

4

1 に答える 1

1

パーツ別、

サービスプロジェクトがすでにコアプロジェクトを参照しているのに、なぜコアプロジェクトを参照する必要があるのですか?

この回答によると、プロジェクト参照は継承できません。Servicesに依存しているという事実は、消費者がについて何かを知る必要がCoreあることを意味するものではなく、さらに言えば、で排他的に定義されたロジックを使用することを意味するものではありません。ServicesCoreCore

専用のテストデータベースを作成/使用するための推奨される方法は何ですか?

それは、どのデータベース、どのORM、どのフレームワークなどに完全に依存します。それを行うための固定された方法はありません。

テストプロジェクトにどのデータベースを使用するかを指示するにはどうすればよいですか?

同じように、アプリケーションにそれを行うように指示します:構成を介して。を作成し、DatabaseStubその中にテストデータベース情報をハードコーディングするだけです。

于 2013-02-20T18:44:47.487 に答える