2010-06-12 10 views
34

मैं विम स्क्रिप्ट का परीक्षण करने के लिए कुछ टूल ढूंढ रहा हूं। या तो vim लिपियों किविम प्लगइन्स परीक्षण के लिए उपकरण

  • इकाई/कार्यात्मक परीक्षण करते हैं, या कुछ अन्य पुस्तकालय के लिए
  • वर्गों (जैसे पायथन के unittest मॉड्यूल), जो पैरामीटर कि यह करने के लिए कारण के साथ यह सुविधाजनक करने के लिए
    • रन vim बनाने इसके पर्यावरण पर कुछ परीक्षण, और
    • आउटपुट से निर्धारित किया गया है कि दिया गया परीक्षण पास किया गया है या नहीं।

मैं vim लिपियों कि इकाई परीक्षण कर के एक जोड़े के बारे में पता कर रहा हूँ, लेकिन वे एक तरह से अस्पष्ट प्रलेखित रहे हैं और या वास्तव में उपयोगी नहीं हो सकता है हो सकता है:

vim-unit:

  • अभिप्राय
  • पहली और एकमात्र संस्करण (v0.1) "एक साधारण इकाई परीक्षण ढांचे और उपकरणों के साथ vim स्क्रिप्ट प्रदान करने के लिए" 2004
  • में जारी किया गया था
  • दस्तावेज़ीकरण का उल्लेख नहीं है कि यह विश्वसनीय रूप से काम करता है या नहीं, यह कहने के अलावा कि यह "समाप्त होने से किराया [एसआईसी] है"।

unit-test.vim:

  • यह एक भी सुंदर प्रयोगात्मक लगता है, और विशेष रूप से विश्वसनीय नहीं हो सकता।
  • मई छोड़ दिया गया है या बैक-हटाया: पिछले वर्ष 2009-11 में प्रतिबद्ध (> 6 महीने पहले)
  • कोई टैग किए गए संशोधन (यानी कोई विज्ञप्ति)

ताकि लोगों से जानकारी नहीं बनाई गई है, जो था उन दो मौजूदा मॉड्यूल में से एक का उपयोग कर रहे हैं, और/या अन्य के लिए लिंक, अधिक स्पष्ट रूप से उपयोग करने योग्य, विकल्प, बहुत स्वागत है।

उत्तर

3

मैंने पहले vim-unit का उपयोग किया है। कम से कम इसका मतलब है कि आपको अपना खुद का AssertEquals और AssertTrue फ़ंक्शन लिखना नहीं है। इसमें एक अच्छी सुविधा भी है जो आपको वर्तमान कार्य को चलाने देता है, अगर यह "टेस्ट" से शुरू होता है, कर्सर को फ़ंक्शन बॉडी में रखकर और :call VUAutoRun() टाइप करके।

प्रलेखन थोड़ा iffy और अधूरा है, लेकिन यदि आपके पास अन्य XUnit परीक्षण पुस्तकालयों के साथ अनुभव है तो यह आपके लिए अपरिचित नहीं होगा।

वर्णित स्क्रिप्ट में से किसी भी प्रकार के विशिष्ट विशेषताओं की जांच करने के तरीके नहीं हैं - आप बफर नहीं बदल सकते हैं और फिर परिणाम पर उम्मीदों की जांच कर सकते हैं - इसलिए आपको अपनी विस्क्रिप्ट को एक टेस्टेबल तरीके से लिखना होगा। उदाहरण के लिए, फ़ंक्शन के अंदर getline() के साथ उन्हें बफर से बाहर खींचने के बजाय कार्यों में स्ट्रिंग पास करें, उस तरह की चीज़ setline() का उपयोग करने के बजाय तारों को वापस करें।

+0

विम स्टार्टअप को कॉन्फ़िगर करने के लिए कोई समर्थन? उदाहरण के लिए, क्या मैं निर्दिष्ट कर सकता हूं कि केवल एक विशिष्ट प्लगइन लोड किया जाना चाहिए? – intuited

+0

नहीं, लेकिन आप हमेशा नकली हो सकते हैं कि --noplugin और -u अगर यह कोई समस्या है। – richq

8

एक और (शुद्ध VimL) UT plugin है जिसे मैं बनाए रख रहा हूं।

यह दस्तावेज है, यह कई उदाहरणों के साथ आता है, और यह मेरे अन्य प्लगइन द्वारा भी उपयोग किया जाता है।

यह केवल फ़ंक्शंस परिणामों का परीक्षण करने और Quickfix विंडो में विफलताओं को प्रदर्शित करने का लक्ष्य रखता है। अपवाद कॉलस्टैक भी डीकोड किए गए हैं। AFAIK, यह अभी तक एकमात्र प्लगइन है (या कम से कम पहला) जो कि क्विकफ़िक्स विंडो को भरने के लिए है। तब से, मैंने rspec (+ Vimrunner)

के साथ परीक्षण परिणामों का उत्पादन करने के लिए सहायक स्क्रिप्ट्स को जोड़ा है, ध्यान दें कि मैपिंग/स्निपेट/... के साथ बफर को कैसे बदला जाता है, यह जांचने के लिए, मैं अन्य प्लगइन का उपयोग करने की सलाह देता हूं । उदाहरण के लिए, मैं VimRunner + RSpec के साथ ट्रैविस पर अपने सी ++ स्निपेट (एलएच-सीपीपी से) का परीक्षण करता हूं।

वाक्य रचना के बारे में, यह इस तरह दिखता है:

" Old way, to test boolean expressions 
Assert 1 > 2 
Assert 1 > 0 
Assert s:foo > s:Bar(g:var + 28)/strlen("foobar") 

AssertTxt! (s:foo > s:Bar(g:var+28), 
     \, s:foo." isn't bigger than s:Bar(".g:var."+28)") 

" New, recommended way to test relations 
AssertEquals('a', 'a') 
AssertDiffers('a', 'b') 
let dict = {} 
AssertIs(dict, dict) 
AssertMatch('abc', 'a') 
AssertRelation(1, '<', 2) 
AssertThrows 0 + [0] 
+1

ये दस्तावेज! धन्यवाद, मैं इसे देख लूंगा। यह भी ध्यान दिया गया कि वहाँ लिंक अनुभाग में सूचीबद्ध कुछ अन्य समान उपकरण हैं। – intuited

+0

उपर्युक्त पोस्ट में लिंक काम नहीं करता है। मुझे लगता है कि यह (https://github.com/LucHermitte/vim-UT) है जहां इसे जाना चाहिए। – Forbesmyester

+0

हां वास्तव में। Google कोड बंद होने के बाद मैं इसे अपडेट करना भूल गया। धन्यवाद! –

10

मैं दोनों परीक्षण विम प्लगइन्स को RSpec साथ संयोजन के रूप में Andrew Radev's Vimrunner का उपयोग कर सफलता मिली है और उन्हें एक सतत एकीकरण सर्वर पर ही सेट किया।

संक्षेप में, Vimrunner एक विम सर्वर की आग और फिर दूरदराज के आदेश भेजने ताकि आप का निरीक्षण (और सत्यापित करें) कर सकते हैं परिणाम के लिए विम के क्लाइंट-सर्वर कार्यक्षमता का उपयोग करता। यह एक रूबी मणि है, इसलिए आपको रूबी के साथ कम से कम कुछ परिचितता की आवश्यकता होगी, लेकिन यदि आप समय निकालते हैं तो आपको अपने परीक्षण लिखने के लिए आरएसपीसी की पूरी शक्ति मिलती है।

उदाहरण के लिए, एक फ़ाइल spec/runspec.vim_spec.rb कहा जाता है:

require "vimrunner" 
require "fileutils" 

describe "runspec.vim" do 
    before(:suite) do 
    VIM = Vimrunner.start_gui_vim 
    VIM.add_plugin(File.expand_path('../..', __FILE__), 'plugin/runspec.vim') 
    end 

    after(:all) do 
    VIM.kill 
    end 

    it "returns the current path if it ends in _test.rb" do 
    VIM.echo('runspec#SpecPath("foo_test.rb")').should == "foo_test.rb" 
    VIM.echo('runspec#SpecPath("bar/foo_test.rb")').should == "bar/foo_test.rb" 
    end 

    context "with a spec directory" do 
    before do 
     FileUtils.mkdir("spec") 
    end 

    after do 
     FileUtils.remove_entry_secure("spec") 
    end 

    it "finds a spec with the same name" do 
     FileUtils.touch("spec/foo_spec.rb") 
     VIM.echo('runspec#SpecPath("foo.rb")').should == "spec/foo_spec.rb" 
    end 
    end 
end 

मैं "Testing Vim Plugins on Travis CI with RSpec and Vimrunner" में विस्तार से इसके बारे में लिखा है यदि आप और अधिक विस्तार चाहते हैं।

14

vader.vim आसान है, और अद्भुत है। इसमें कोई बाह्य निर्भरता (रूबी/रेक की आवश्यकता नहीं है), यह एक शुद्ध विस्क्रिप्टस्क्रिप्ट प्लगइन है।

Given (description of test): 
    foo bar baz 

Do (move around, insert some text): 
    2Wiab\<Enter>c 

Expect: 
    foo bar ab 
    cbaz 

आप परीक्षण फ़ाइल खुला है, तो आप इसे इस तरह चला सकते हैं::

:Vader % 

या आप फ़ाइल पथ को इंगित कर सकते हैं:

:Vader ./test.vader 
+3

उस पर लेखक ने तुरंत मुद्दों का जवाब दिया। –

0
यहाँ एक पूरी तरह से निर्दिष्ट परीक्षण है

कुछ और उम्मीदवार:

VimBot - विमरुनर के समान, इसमें रूबी में लिखा गया है और आपको दूरस्थ रूप से एक vim उदाहरण को नियंत्रित करने की अनुमति देता है। यूनिट परीक्षण फ्रेमवर्क आरएसपीईसी के साथ प्रयोग किया जा रहा है।

VimDriver - रुबी के बजाय पाइथन में किए गए विमबॉट के समान ही (विमबॉट से सीधे बंदरगाह के रूप में शुरू किया गया) ताकि आप पाइथन के यूनिट परीक्षण ढांचे का उपयोग कर सकें यदि आप इससे अधिक परिचित हैं।

1

कार्यात्मक परीक्षण के लिए, वहाँ एक उपकरण vroom कहा जाता है। इसमें कुछ सीमाएं हैं और एक अच्छी आकार परियोजना के लिए पूरी तरह से परीक्षण करने के लिए सेकंड-टू-मिनट ले सकते हैं, लेकिन इसका समर्थन करने के लिए विम सिंटैक्स हाइलाइटिंग समर्थन के साथ एक अच्छा साक्षर परीक्षण/दस्तावेज़ीकरण प्रारूप है।

यह codefmt प्लगइन और कुछ इसी तरह की परियोजनाओं का परीक्षण करने के लिए प्रयोग किया जाता है। उदाहरण के लिए आप वर्म/डीआईआर देख सकते हैं।

0

वहाँ vim-vspec है। आपके परीक्षण विस्क्रिप्ट में लिखे गए हैं और आप उन्हें बीडीडी-शैली का उपयोग करके लिख सकते हैं (वर्णन, यह, उम्मीद है, ...

:)

runtime! plugin/sandwich/function.vim 
describe 'Adding Quotes' 
    it 'should insert "" in an empty buffer' 
    put! = '' 
    call SmartQuotes("'") 

    Expect getline(1) == "''" 
    Expect col('.') == 2 
    end 
end 

GitHub एक वीडियो और प्राप्त करने के लिए एक लेख आप आरंभ करने के लिए लिंक है

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