2012-02-28 7 views
14

परंपरागत रूप से, nunit-console.exe को भंडार में और बिल्ड सर्वर (या किसी अन्य मशीन) में शामिल किया गया है, इस EXE को कुछ बिल्ड स्क्रिप्ट से बुलाया गया था।NUnit.Runners पैकेज और psake का उपयोग कर NUnit परीक्षण निष्पादित करने के लिए कैसे?

अब जब कि NUnit.Runners package उपलब्ध है मुझे आश्चर्य है कि यह कैसे एक psake निर्माण स्क्रिप्ट से इस्तेमाल किया जा सकता। यह एक समाधान-स्तर पैकेज है इसलिए यह packages.config में कोई निशान नहीं छोड़ता है और अन्य प्रोजेक्ट-स्तरीय पैकेजों के रूप में स्वत: बहाल नहीं किया जा सकता है, इसलिए मुझे लगता है कि किसी को psake स्क्रिप्ट से Install-Package पर कॉल करने की आवश्यकता होगी, डाउनलोड के लिए प्रतीक्षा करें और फिर निष्पादित करें यूनिट परीक्षण? उम्मीद है कि यह डाउनलोड केवल एक बार चलाया जा सकता है और जब भी यह चलता है तो यह बिल्ड को धीमा नहीं करेगा। या यह होगा?

+0

तो जहाँ तक मैं इसे सही ढंग से समझ के रूप में, आप एक काम दूसरे स्थान स्थापित कर रहे हैं कि क्या जाँच करता है और यदि नहीं, तो यह nuget चलाता है और पैकेज को स्थापित करता है कि ज़रूरत है? – stej

+1

हां, ऐसा कुछ। (आदर्श रूप में, समाधान स्तरीय संकुल ऑटो बहाल कार्यक्षमता में निर्मित होना चाहिए और मैं बस 'packages' फ़ोल्डर के अंदर कहीं न कहीं nunit-console.exe बुलाना चाहिए, लेकिन वह शायद NuGet के कुछ भविष्य संस्करण में ही आ जाएगा।) – Borek

+0

मैं पता नहीं था कि समाधान-स्तर के पैकेज बिल्कुल मौजूद हैं। आप उन्हें कैसे पहचानते हैं? वीएस ट्रैक कैसे करता है कि NUnit.Runners पहले से स्थापित है? – springy76

उत्तर

0

यह आपके प्रश्न का उत्तर नहीं देता है, लेकिन किसी भी समस्या का सामना करने वाले किसी व्यक्ति के लिए इसका उपयोग किया जा सकता है। मैं एक टीमसिटी बिल्ड स्थापित करने की कोशिश कर रहे एक ही समस्या में भाग गया। मैंने नूनिट के पुराने संस्करण में वापस जाकर इस पर काम किया।

NUnit 2.5.10.11092 अभी भी nuget पैकेज में nunit exe की है।

8

बस इस में भाग गया। निम्नानुसार ठीक करने के लिए काफी आसान:

  1. Nuget पैकेज प्रबंधक एक्सटेंशन का नवीनतम संस्करण प्राप्त करें। मैं फिलहाल 1.8 पर हूं।
  2. अपने समाधान
  3. कॉपी अपने इकाई परीक्षण परियोजना के packages.config फ़ाइल

अब से में अपने .nuget फ़ोल्डर के अंतर्गत packages.config से धावक से संबंधित तत्व को Nunit.Runners पैकेज जोड़ें जब आप निर्माण करते हैं, तो नुजेट नुनिट को खींच लेगा। धावक पैकेज अगर यह मशीन पर नहीं है। मैं फिर अपने कमांड लाइन बिल्ड में पैकेज से नूनिट रनर का संदर्भ देता हूं।

मैं एक छोटे से परियोजना मैं एक TeamCity build light on Github के लिए किया था में यह काम कर रहे है। यूनिट टेस्ट प्रोजेक्ट में Packages.config को ऊपर चर्चा के रूप में संशोधित किया गया है। आप MSBuild फ़ाइल को देख सकते हैं कि मैं कमांड लाइन से परीक्षण कैसे चलाता हूं। (build.proj, जो कुछ लक्ष्य और गुणों को संदर्भित करता है जो भंडार के उपकरण \ msbuild फ़ोल्डर में निहित हैं)। VS.NET या कमांड लाइन (clicktobuild.bat) से बनाने का प्रयास करने से पहले आपको नवीनतम Nuget पैकेज प्रबंधक स्थापित करना होगा।

आप कैसे काफी आसानी से psake में सही स्थान से Nunit कंसोल को चलाने के लिए के विचार बंदरगाह के लिए सक्षम होना चाहिए।

+1

"गीथूब पर प्रकाश बनाने" का लिंक टूटा हुआ है 404 :(, लिंकिंग लिंक https://github.com/SouthsideSoftware/BuildLight – roundcrisis

2

मैं एक issue with nuget developers बनाया है, और एक ठीक का प्रस्ताव किया है।

nuget.targets निम्न परिवर्तन के साथ फ़ाइल को संशोधित: इस तत्व

<SolutionLevelPackagesConfig>$([System.IO.Path]::Combine($(SolutionDir), ".nuget\packages.config"))</SolutionLevelPackagesConfig> 

<PropertyGroup> में जोड़ें::

<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'"> में इस तत्व जोड़

<RestoreSolutionLevelCommand>$(NuGetCommand) install "$(SolutionLevelPackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreSolutionLevelCommand> 

<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites"> में इस तत्व जोड़ WinNT के लिए RestoreCommand से पहले:

<Exec Command="$(RestoreSolutionLevelCommand)" 
       LogStandardErrorAsError="true" 
       Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)') And Exists('$(SolutionLevelPackagesConfig)')" /> 

यह समाधान स्तर संकुल बहाल करने के लिए मेरी MSBuild बनाया है।

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