0

コアプロジェクトの上にサービスプロジェクトを含むMVCプロジェクトを使用したソリューションがあります。

ユニットテストプロジェクトを追加し、コアとサービスを参照しました-サービスをテストしようとしています。

テストでは基本的な呼び出しがあります。

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

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

テストがデータベースに接続できないため、これは失敗します。私の設定にはこれがあります:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\;Initial Catalog=Project.Services.Tests;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Project.Services.Tests.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

データベースProject.Services.Testsを作成して実行しようとしましたが、次のようになります。

Message = Database'C:\ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA\App.Services.Tests.mdf'は既に存在します。別のデータベース名を選択してください。ファイル「C:\ PROJECTS \ App \ App \ Services.Tests \ bin \ Debug\Services.Tests.mdf」をデータベース「App.Services.Tests」として添付できません。Source =.NetSqlClientデータプロバイダーErrorCode=-2146232060 Class = 16 LineNumber = 65536 Number = 1801 Procedure = ""Server=。\State= 2 StackTrace:

データベースを削除してテストに実行させてみましたが、次のようになりました。

ファイルアクティベーションエラーが発生しました。物理ファイル名'\Project.Services.Tests.mdf'が正しくない可能性があります。追加のエラーを診断して修正し、操作を再試行してください。

どうすればこれを正しく機能させることができますか?

4

2 に答える 2

2

単体テストでは、データベースやファイル システムなどの依存関係なしでコードをテストする必要があります。単体テストとは、コードのその部分のみを個別にテストすることを意味します。データベースへの統合によってコードをテストする場合は、統合テストを作成する必要があります。つまり、テストを実行する前にデータベースを使用するための初期化を作成し、テストの終了後にリソースを破棄するためにティアダウンを作成する必要があります。

おそらく、このリンクは、単体テストと統合テストの違いをより理解するのに役立ちます

于 2013-02-21T06:05:37.880 に答える