मेरे पास एक एएसपी.नेट एमवीसी प्रोजेक्ट का परीक्षण करने के लिए एक विजुअल स्टूडियो यूनिट टेस्ट प्रोजेक्ट है।एमएसटीएस्ट - मैं यूनिटटेस्ट प्रोजेक्ट के लिए log4net कैसे प्रारंभ करूं?
विधानसभा स्तरीय जोड़ना log4net.Config.XmlConfigurator
AssemblyInfo.cs को विशेषता काम नहीं करता है और इतने पर अन्य लोगों ने पाया है कि वे log4net.Config.XmlConfigurator.Configure();
सवाल यह है कि, यह कैसे एक के लिए किया जा सकता है के लिए एक सीधा कॉल का उपयोग करना अध्याय परीक्षा? कक्षा विधि पर Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize
विशेषता का उपयोग करने का उत्तर काम नहीं करता है।
मेरे लिए, इस कोड के परिणामस्वरूप आउटपुट विंडो और परीक्षण सत्र बम में लॉग इन InvalidOperationException
में परिणाम हुआ।
[TestClass]
public sealed class Startup
{
[AssemblyInitialize]
public void Configure()
{
System.Diagnostics.Debug.Write("Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize");
}
}
प्रलेखन पढ़ना, MSDN ASP.NET के लिए परीक्षण परियोजनाओं पर AssemblyInitialize
उपयोग करने के लिए नहीं है, क्योंकि वे एक बार से अधिक कहा जा सकता है कहते हैं।
तो यह कैसे किया जा सकता है ताकि लॉग परीक्षण किसी भी परीक्षण से पहले कॉन्फ़िगर किया गया हो?
क्या मैं लॉग 4नेट के लिए एक अमूर्तता का उपयोग करके एक और दृष्टिकोण सुझा सकता हूं, आईबॉगर जैसे कुछ डीबग, जानकारी, चेतावनी इत्यादि को परिभाषित करता है .. इस तरह, आप आईएलओगर के लिए अलग-अलग कार्यान्वयन प्रदान कर सकते हैं, एक लॉग लॉगनेट का उपयोग करके वास्तविक लॉगिंग करने के लिए और आपके वास्तविक अनुप्रयोग में उपयोग किया जाना चाहिए, और अन्य कुछ ऐसा है जैसे InMemoryLogger जो यूनिटटेस्टिंग में उपयोग करने के लिए बहुत आसान हो सकता है। फिर भी आप इलोगर का मॉक (moq का उपयोग कर सकते हैं), जो लॉग 4नेट का उपयोग करते समय संभव नहीं है। –
आपका दृष्टिकोण बेहतर है। हालांकि मैं अमूर्त लॉगिंग करता हूं, मैं लॉगिंग के साथ DI नहीं करता, क्योंकि मुझे लॉगिंग घटक को स्विच करने की आवश्यकता नहीं है - वे वैसे भी कॉन्फ़िगर करने योग्य हैं - इसलिए यदि दिन आया तो लॉग 4नेट को जाना पड़ा, तो मैं बस रिकोड करता मेरा ILogger कारखाना। इस मामले में, मैं सिर्फ डीबगर में अपने लॉगिंग स्टेटमेंट देखना चाहता था। –