1
我在考慮使用通過種子創建的數據測試VS2015 EF Code First項目是否合理。我不清楚測試項目中的設置和拆卸以及實際測試的內容。如何使用種子數據測試實體框架
有沒有一個例子可以讓我指出這一點呢?另外,我是否認爲這是測試(種子數據)的好方法。我一直無法找到這方面的例子。我所看到的例子看起來似乎比嘲笑數據複雜得多。
我在考慮使用通過種子創建的數據測試VS2015 EF Code First項目是否合理。我不清楚測試項目中的設置和拆卸以及實際測試的內容。如何使用種子數據測試實體框架
有沒有一個例子可以讓我指出這一點呢?另外,我是否認爲這是測試(種子數據)的好方法。我一直無法找到這方面的例子。我所看到的例子看起來似乎比嘲笑數據複雜得多。
您尚未指定是否使用MSTest,但我今天剛剛遇到此問題,這是我使用MSTest所做的。這個基礎測試類在運行的第一個測試中處理種子。 Initialize(false)使它不會嘗試初始化二次測試運行,因此只有第一次測試支付設置價格。由於每個測試都在一個事務中,它們將回滾在每個測試中所做的更改。
[TestClass]
public abstract class EntityFrameworkTest
{
private static bool _hasSeeded;
protected TransactionScope Scope;
[TestInitialize]
public void Initialize()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<YourContext, YourModelNameSpace.Migrations.Configuration>());
using (var context = new YourContext())
{
context.Database.Initialize(false);
if (!_hasSeeded)
{
context.AnEntity.AddOrUpdate(c => c.EntityName, new AnEntity {EntityName = "Testing Entity 1"});
context.SaveChanges();
_hasSeeded = true;
}
}
Scope = new TransactionScope();
}
[TestCleanup]
public void CleanUp()
{
Scope.Dispose();
}
[AssemblyCleanup]
public static void KillDb()
{
using (var context = new YourContext())
context.Database.Delete();
}
}
這也是值得一提的,像這樣我的情況下被設置爲查找(ConnStringName)的連接字符串設置我的測試項目中的app.config。這裏的願望是,每個開發人員只需在本地數據庫中創建一個測試數據庫,並且不必爲了實際的SQL實例設置不同而將連接字符串更改爲某些東西。另外,根據您是否是VS 2015,您的本地數據庫數據源可能會有所不同。
<add name="ConnStringName" connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=DbNameTestingInstance; Integrated Security=True; MultipleActiveResultSets=True;Application Name=Testing Framework;" providerName="System.Data.SqlClient" />