के साथ लेनदेन का निपटान करने का डाउनसाइड मैं अपने टेबल डेटा को ईएफ के साथ एकीकरण परीक्षण करने के लिए एक त्वरित तरीका ढूंढ रहा हूं।इकाई फ्रेमवर्क एकीकरण परीक्षण
हर कोई अपनी परीक्षण विधि के आसपास एक लेनदेन लपेटता है और परीक्षण के बाद लेनदेन का निपटान करता है।
इस तरह डेटा को तालिका में कभी नहीं लिखा जाता है।
आवेषण के लिए नए ऑटो आईडी की तरह चीजें अभी भी काम कर रही हैं, लेकिन मैं खुद से पूछता हूं कि यह विधि .commit() लेनदेन की तुलना में वास्तव में विश्वसनीय है।
वहाँ हैं इस दृष्टिकोण का उपयोग कर के किसी भी कमियां जो के रूप में डेटाबेस कभी नहीं छुआ है कोई वास्तविक एकीकरण परीक्षण होने के लिए नहीं लग रहे हैं ...
या दूसरे शब्दों में पूछा वहाँ दोषपूर्ण परिदृश्यों जो का उपयोग कर अपवाद के रूप में पॉप नहीं है प्रतिबद्धता के बिना लेनदेन()?
अद्यतन
public abstract class IntegrationTestsBase
{
protected TransactionScope TransactionScope;
public abstract void TestSetup();
protected void InitTestSetupOnTable(string tableName)
{
TransactionScope = new TransactionScope();
using (var context = new TGBContext())
{
var cmdCommand = string.Format("DBCC CHECKIDENT ({0}, RESEED, 1)", tableName);
context.Database.ExecuteSqlCommand(cmdCommand);
context.SaveChanges();
}
}
[TestCleanup]
public void TestCleanup()
{
TransactionScope.Dispose();
}
}
[TestClass]
public class MyTests : IntegrationTestsBase
{
[TestInitialize]
public override void TestSetup()
{
base.InitTestSetupOnTable("MyTableName");
}
}
केवल वास्तविक अंतर यह है कि आप सहमति का परीक्षण नहीं करते हैं। तो जब आपको आवश्यकता होगी (और आपको इसकी आवश्यकता होगी!) आप प्रारंभिक लेनदेन/रोलबैक दृष्टिकोण बदल देंगे। साथ ही, बैकअप को पुनर्स्थापित करें और डेटाबेस ड्रॉप करें परीक्षण शुरू/अंत में कोड की कुछ पंक्तियां हैं। – bubi
@bubi डेटाबेस को पुनर्स्थापित करें context.datebase.Create() से तेज है? – Elisabeth
यदि आप एक खाली डेटाबेस के साथ परीक्षण शुरू कर सकते हैं तो आप Create() का भी उपयोग कर सकते हैं। मुझे नहीं पता कि यह तेज़ है या नहीं, शायद टेबल/फ़ील्ड/रिश्ते/डीबीएमएस की संख्या पर निर्भर करता है ... साथ ही, यह भी हो सकता है कि कुछ ईएफ प्रदाता बनाएँ() का समर्थन नहीं करता है। मेरे मामले में मैं ईएफ परीक्षण करने के लिए माइक्रोसॉफ्ट एक्सेस का उपयोग करता हूं और प्रदाता कोडफर्स्ट माइग्रेशन का समर्थन करता है लेकिन दृष्टिकोण से स्वतंत्र रूप से बनाएं() – bubi