आप अपनी अगली छोटी सुविधा में चेक इन करने वाले हैं, इसलिए आप एक पूर्ण इंटीग्रेशन टेस्ट रन शुरू करते हैं। आप इंतजार करते हैं, और इंतजार करते हैं, जैसे-जैसे डॉट्स आपकी स्क्रीन भरते हैं, जब तक कि...
......FF....pre>
:-(आपके टेस्ट खत्म होने में अभी कुछ मिनट बाकी हैं। लेकिन अगर आप टेस्ट रन को जल्दी छोड़ देते हैं, तो आपको कोई अंदाजा नहीं होगा कि कौन से टेस्ट विफल हुए।
क्या आपको वास्तव में उन विफलताओं को देखने से पहले पूरे रन के खत्म होने का इंतजार करना होगा?
Ctrl-T बचाव के लिए!
यदि आप मैक का उपयोग कर रहे हैं, तो आपके टेस्ट विफलताओं को जल्दी देखने का एक तरीका है:
अपने टेस्ट चलते समय
Ctrl-Tदबाएं।जब आप ऐसा करते हैं, तो आप देखेंगे कि कौन सा टेस्ट केस वर्तमान में चल रहा है, और यह कितने समय से चल रहा है। यदि अब तक कोई टेस्ट विफल हुआ है, तो आप भी उन विफलताओं को देखेंगे, इसलिए आप अगले रन से पहले उन्हें ठीक करने में एक शुरुआत कर सकते हैं!
यह उन टेस्ट को डीबग करने के लिए भी वास्तव में आसान है जो बस लटक जाते हैं।
Ctrl-Tआपको बताएगा कि कौन सा टेस्ट चलाने की कोशिश कर रहा है, इसलिए आप केवल उस एक टेस्ट को अलग कर सकते हैं और इसे ठीक कर सकते हैं।अंत में, मैंने
Ctrl-Tदबाने की आदत बना ली है जब भी कोई टेस्ट खत्म होने में स्पष्ट रूप से लंबा समय लेता है (कहें, एक सेकंड या अधिक)। इसने मुझे बहुत सारे धीमे टेस्ट की ओर इशारा किया जिन्हें मुझे तेज करने की आवश्यकता है।Ctrl-T कैसे काम करता है?
मैक पर,
Ctrl-Tएक संदेश, या सिग्नल, जिसेINFOकहा जाता है, को जो भी प्रोग्राम चल रहा है उसे भेजता है:signal_test.rb puts "Starting..." trap("INFO") { puts "INFO triggered!" } loop { print "."; sleep 0.1}pre>~/Source jweiss$ ruby signal_test.rb Starting... ........^Tload: 7.14 cmd: ruby 6121 running 0.10u 0.08s INFO triggered! .......^Tload: 7.14 cmd: ruby 6121 running 0.10u 0.08s INFO triggered! ................^Tload: 11.77 cmd: ruby 6121 running 0.10u 0.08s .INFO triggered! ......^Csignal_test.rb:5:in `sleep': Interrupt from signal_test.rb:5:in `block in <main>' from signal_test.rb:5:in `loop' from signal_test.rb:5:in `<main>'pre>Minitest
INFOके बारे में जानता है, और टेस्ट रन के बारे में जानकारी प्रिंट करके इसका जवाब देता है:~/Source/rails/activesupport[master] jweiss$ be rake /usr/local/Cellar/ruby/2.2.0/bin/ruby -w -I"lib:test" "/usr/local/Cellar/ruby/2.2.0/lib/ruby/2.2.0/rake/rake_test_loader.rb" "test/**/*_test.rb" Run options: --seed 33445 # Running: .................F........^Tload: 1.62 cmd: ruby 29646 running 4.37u 1.40s Current results: 1) Failure: CleanLoggerTest#test_format_message [/Users/jweiss/Source/rails/activesupport/test/clean_logger_test.rb:13]: Expected "error\n" to not be equal to "error\n". Current: DigestUUIDExt#test_invalid_hash_class 0.02s ............................pre>बहुत अच्छा!
यह जानकर कि यह संभव है, आप सोच सकते हैं कि अन्य ऐप्स
INFOको कैसे संभाल सकते हैं:
- Rails वर्तमान में चल रहे कंट्रोलर एक्शन या कुछ प्रदर्शन आँकड़े प्रदर्शित कर सकता है।
- Sidekiq आपको बता सकता है कि प्रत्येक वर्कर क्या कर रहा है, ताकि आप देख सकें कि वे कहां अटक जाते हैं।
और Sidekiq वास्तव में INFO का उपयोग प्रत्येक थ्रेड के बैकट्रेस को प्रिंट करने के लिए करता था जो यह चलाता था। लेकिन क्योंकि INFO लिनक्स पर समर्थित नहीं है, Sidekiq एक अलग सिग्नल पर स्विच हो गया। दुर्भाग्य से, उस सिग्नल को INFO की तरह कीबोर्ड शॉर्टकट द्वारा ट्रिगर नहीं किया जा सकता।
क्योंकि INFO लिनक्स पर उपलब्ध नहीं है (और कुछ कह सकते हैं कि इस तरह INFO का उपयोग करना पूरी तरह से सही नहीं है, वैसे भी), यह व्यवहार उतना व्यापक नहीं है जितना हो सकता था।
फिर भी, यह थोड़ी अतिरिक्त मदद है जो कई स्थितियों में उपयोगी हो सकती है। यदि आप एक ऐप बना रहे हैं, तो यह सोचने लायक है कि आप ऑन-डिमांड उन लोगों को किस तरह के स्टेटस मैसेज प्रदर्शित कर सकते हैं जो रुचि रखते हैं।