私たちはDALの機能テストのために、データベースをベースクラスにセットアップするために次のコードを使用しました。これは私たちにとって非常にうまく機能しています。ユニットテストプロジェクトでVisual Studio Database Projectを使用して、機能テスト用の空のデータベースをセットアップできますか?
/// <summary>
/// Initializes the test class by creating the integration database.
/// </summary>
[TestInitialize]
public virtual void TestInitialize()
{
DataContext = new DataContext(ConnectionString);
CleanupPreviousTestRunDatabases();
if (DataContext.Database.Exists())
{
DataContext.Database.Delete();
}
DataContext.Database.Create();
DataContext.Database.ExecuteSqlCommand(String.Format(Strings.CreateLoginCommand, DatabaseUserName, DatabasePassword));
DataContext.Database.ExecuteSqlCommand(String.Format("CREATE USER {0} FOR LOGIN {0}", DatabaseUserName));
DataContext.Database.ExecuteSqlCommand(String.Format("EXEC sp_addrolemember 'db_owner', '{0}'", DatabaseUserName));
}
ただし、Entity Frameworkのを使用すると、セットアップデータベースのすべてのコンポーネントをせず、私たちはEFのDALモデルと実際のデータベース間の不一致をキャッチしたいと思います。
SSDTツール/ Visual Studioデータベースプロジェクトを使用してデータベース作業を行いますが、SQLユニットテストを書くことができます。これらのSQLユニットテストでは、データベースベースのセットアップと作成データベースプロジェクト自体にこれは私がやりたいことですが、私たちの他の機能テストライブラリからです。
私は、ライブラリを参照し、セットアップコードの一部を書きますが、私が探してはいることができます。
a)はどのように展開するために使用するデータベースプロジェクト提供していますか?
b)動的な名前のデータベースではなく、localdbを使用するなど、app.configではなく接続文字列をコードで指定するにはどうすればよいですか。 「
namespace Product.Data.Tests
{
using Microsoft.Data.Tools.Schema.Sql.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class FunctionalTest
{
[TestInitialize]
public virtual void TestInitialize()
{
SqlDatabaseTestClass.TestService.DeployDatabaseProject();
SqlDatabaseTestClass.TestService.GenerateData();
}
}
}
SQLユニットテストプロジェクト内のapp.configは、テストコードの一部を任意のバックそれを作成するために使用された元のデータベースプロジェクトへの参照、および逆コンパイルを含まず、それがどのように機能するかを見て、私はドン何かの指示を見てください。ソリューションにデータベースプロジェクトが1つしかないと想定していますか?
ガイダンスとハイパーリンクをありがとう。私はこの仕事をすることができました。 –