2009-06-16 12 views
6

मैं अपने एएसपी.NET एप्लिकेशन के कुछ स्वचालित वेब परीक्षण करने की कोशिश कर रहा हूं। मैं परीक्षण के दौरान किए गए किसी भी डेटाबेस परिवर्तन को पूर्ववत करने के लिए Xunit.net एक्सटेंशन से AutoRollback विशेषता का उपयोग करने की उम्मीद कर रहा था। ऑटो रोलबैक परीक्षण से पहले एक लेनदेन शुरू करने के लिए लेनदेनस्कोप का उपयोग करता है और बाद में इसे वापस रोल करता है।लेनदेनस्कोप रोलबैक सेलेनियम या वाटिन के साथ उपयोग किया जा सकता है?

जब मैं लेनदेन के दौरान अपना वेब एप्लिकेशन हिट करने का प्रयास करता हूं, तो यह हमेशा समय समाप्त होता है। ऐसा लगता है कि यह काम करना चाहिए, कोई विचार? यहाँ मेरी परीक्षा है:

[Fact] 
[AutoRollback] 
public void Entity_should_be_in_list() 
{ 
    Entity e = new Entity 
    { 
     Name = "Test", 
    }; 
    dataContext.Entities.InsertOnSubmit(e); 
    dataContext.SubmitChanges(); 

    selenium.Open("http://localhost/MyApp"); 
    Assert.True(selenium.IsTextPresent("Test")); 
} 

उत्तर

5

आपका ASP.NET अनुप्रयोग एक अलग डेटाबेस संदर्भ है और यह पता नहीं है कि आप इसे Xunit.net द्वारा शुरू किया लेन-देन में शामिल करना चाहते हैं। जाहिर है, लेनदेन शुरू होने पर डेटाबेस कुछ संसाधनों को लॉक करता है; वेब एप्लिकेशन कुछ समय के लिए धैर्यपूर्वक इंतजार कर रहा है और अंत में छोड़ देता है।

मुझे लगता है कि आपकी सबसे अच्छी शर्त खाली डेटाबेस से शुरू करना है और स्कीमा बनाने और लुकअप टेबल को पॉप्युलेट करने के लिए SQL स्क्रिप्ट का उपयोग करना है (आपका डेटाबेस under source control है, है ना?)। एक और तरीका परीक्षण चलाने से पहले डेटाबेस बैकअप लेना है और फिर समाप्त होने के बाद इसे पुनर्स्थापित करना है।

+0

आप जानते हैं, अब यह स्पष्ट है कि आपने यह कहा है :) मैं आशा करता था कि हर समय डेटाबेस को तोड़ने और फाड़ने से बचें, लेकिन मुझे लगता है कि मैं इसके साथ अटक गया हूं। –

+0

आपको LINQ से SQL में लेनदेन समर्थन को सक्षम करने का एक तरीका ढूंढना होगा ताकि वह मौजूदा लेन-देन के दायरे में शामिल हो सके। –

संबंधित मुद्दे