NUnit

2012-10-16 27 views
15

के साथ एक विंडोज 8 स्टोर ऐप का परीक्षण करना मैं वर्तमान में एक कक्षा के लिए विंडोज स्टोर एप्लिकेशन (विंडोज 8) पर काम कर रहा हूं और मुझे अपने एनयूनीट परीक्षण चलाने में समस्याएं आ रही हैं। कक्षा लाइब्रेरी (Windows स्टोर ऐप्स) -NUnit

  • SQLite-net.csproj

    • TheMetroApp.sln:

      मेरे समाधान/परियोजना सेटअप ऐसा दिखाई देता है। फ़ाइलों को NuGet से खींचा जाता है।

    • डेटामोडेल.csproj - कक्षा पुस्तकालय (विंडोज स्टोर ऐप्स)
    • यूनिटटेस्ट.csproj - यूनिट टेस्ट लाइब्रेरी (विंडोज स्टोर ऐप्स)। NuGet से NUnit ढांचे खींचा गया है।
    • TheMetroApp.csproj - एक प्रोजेक्ट फ़ाइल जिसे विंडोज एसडीके उदाहरणों में से एक से खींचा गया था।
  • Misc। निर्भरता हैं और उपयोगिताएँ

    • Windows 8 प्रो आरटीएम/Visual Studio 2012 RTM
    • ReSharper 7
    • NUnit 2.6.1
    • SQLite
(निर्देश here प्रति सेट करें)

यूनिटटेस्ट्स डेटामोडेल पर निर्भर और संदर्भित है। DataModel SQLite-net पर निर्भर करता है और संदर्भित करता है। यूनिटटेस्ट प्रोजेक्ट में मैंने जो एकमात्र जोड़ा है, वह एक एकल वर्ग है जिसमें कुछ स्टब एनयूनीट यूनिट परीक्षण शामिल हैं। जहाँ तक मेरा बता सकते हैं, इन सही ढंग से स्थापित कर रहे हैं:।

[TestFixture] 
public class TaskSourceTests 
{ 
    #region Private Class Members 

    private ITaskSource _taskSource; 
    private String _dbPath; 

    #endregion 

    #region Testing Infrastructure 

    [SetUp] 
    public void SetUp() 
    { 
     // This part makes NUnit/ReSharper have problems. 
     _dbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "UnitTestDatabase.sqlite"); 
    } 

    #endregion 

    #region Misc. CRUD stuff 

    [Test] 
    public void CreateTaskTest() 
    { 
     // Save the task. 
     Task task = new Task("Some Task", "lol.", DateTime.Now, false); 
     _taskSource.Save(task); 

     // Confirm that it is in the task db. 
     using(SQLiteConnection db = new SQLiteConnection(_dbPath)) 
     { 
      const String query = "SELECT * FROM Task WHERE Id = ?"; 
      IList<Task> results = db.Query<Task>(query, task.Id); 
      Assert.True(results.Contains(task)); 
     } 
    } 

    // ...and so on [but with stubs that are basically Assert.Fail("")]. 

    #endregion 
} 

TheMetroApp Windows 8 एसडीके नमूना परियोजनाओं में से एक है, लेकिन कुछ कस्टम XAML रूपों मैं इस परियोजना के साथ कोई समस्या नहीं कर रहा हूँ में फेंक दिया साथ ।

मेरा मुद्दा यह है कि यूनिट टेस्ट धावकों में से कोई भी जिसे मैंने उपयोग करने का प्रयास नहीं किया है, काम कर रहे हैं।

जब मैं आधिकारिक NUnit 86 टेस्ट धावक (संस्करण 2.6.1) का उपयोग करने का प्रयास करें, मेरा परीक्षण प्रमाण पत्र से संबंधित मुद्दों (see here) की वजह से असफल:

UnitTests.TaskSourceTests.CreateTaskTest: 
SetUp : System.InvalidOperationException : The process has no package identity. (Exception from HRESULT: 0x80073D54) 

ReSharper के NUnit परीक्षण धावक ठीक उसी कारण के लिए विफल रहता है । दुर्भाग्यवश, ऐसा नहीं लगता है कि वर्तमान में इसके लिए एक कार्यवाही है।

मैंने विजुअल स्टूडियो 2012 (NUnit Visual Studio Test Adapter के माध्यम से) में बनाए गए परीक्षण धावक का उपयोग करने का भी प्रयास किया है। जब मैं अपने परीक्षण का उपयोग कर चलाने की कोशिश "सभी चलाएं", मैं निम्नलिखित उत्पादन प्राप्त करें:

------ Run test started ------ 
Updating the layout... 

Checking whether required frameworks are installed... 

Registering the application to run from layout... 

Deployment complete. Full package name: "GibberishAndStuff" 

No test is available in C:\Projects\project-name\ProjectName\UnitTests\bin\Debug\UnitTests.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again. 
========== Run test finished: 0 run (0:00:09.4873768) ========== 

कुछ अजीब मैं देखा है कि अगर मैं टेस्ट Explorer में किसी विशेष परीक्षा का चयन करके उसे बता चलाने के लिए है, मैं थोड़ा अलग त्रुटि संदेश प्राप्त करें:

Could not find test executor with URI 'executor://nunittestexecutor/'. Make sure that the test executor is installed and supports .net runtime version 4.0.30319.18010. 

यह एक प्रकार का परेशान है क्योंकि मेरे पास एनयूनीट टेस्ट एडाप्टर स्थापित है।मैं टेस्ट एडाप्टर के लिए लॉन्चपैड पेज पर अपनी समस्या के समान कुछ नहीं देख रहा हूं।

मुझे सच में यकीन नहीं है कि मुझे यहां से आगे बढ़ना चाहिए। यदि यह काम नहीं करता है तो मुझे xUnit.net, माइक्रोसॉफ्ट के यूनिट परीक्षण ढांचे या कुछ और का उपयोग करने के लिए मेरी परियोजना को फिर से काम करने में कोई फर्क नहीं पड़ता। अगर मैं काम कर रहा हूं तो यह बहुत बढ़िया होगा।

धन्यवाद!

+0

यह एक अच्छा सवाल है। मैं इसे क्लासिक .NET के साथ .NETCore के साथ प्रतिबिंब मॉडल की असंगतता के कारण मानता हूं। यह भी सुनिश्चित नहीं है कि Windows डेस्कटॉप मोड में .NETCore ऐप्स लोड करना संभव है या नहीं। यह पोस्ट अंतर बताती है: http://blogs.msdn.com/b/dotnet/archive/2012/08/28/evolving-the-reflection-api.aspx – Robert

उत्तर

2

मेरे पास एक विंडोज 7 फोन ऐप है जिसमें आपके पास एक ही समस्या है। मेरा समाधान एक अलग "लिंक" परियोजना बनाना था जो मानक .net पुस्तकालयों का उपयोग कर कोड संकलित करता था। लिंक्ड प्रोजेक्ट में यूनिट टेस्ट/एनयूनीट के साथ कोई समस्या नहीं होगी।

http://msdn.microsoft.com/en-us/library/ff921109(v=pandp.40).aspx

http://visualstudiogallery.msdn.microsoft.com/5e730577-d11c-4f2e-8e2b-cbb87f76c044/

मैं Windows 8 एप्लिकेशन को मोड़ा और मेरे परीक्षण मामलों चल रहा कोई समस्या नहीं है:

अधिक जानकारी के लिए निम्न देखें।

0

मैंने यूनिवर्सल ऐप (W81 + WP81) के लिए इकाई परीक्षण बनाते समय एक ही त्रुटि संदेश मारा है। यहां एकमात्र समाधान एनयूनीट का उपयोग करना बंद करना था और केवल एमएसटीएस्ट का उपयोग करना था।