2014-04-02 3 views
11

स्कैला मैक्रोज़ पर परीक्षण करने का प्रस्तावित तरीका क्या है?स्कैला मैक्रोज़ का परीक्षण कैसे करें?

मुझे एहसास है कि अलग संकलन की आवश्यकता के कारण किसी को दो परियोजनाओं की आवश्यकता है। यदि आवश्यक हो, तो यह कदम स्वीकार्य है और ज्यादातर स्पष्ट है।

लेकिन आप कैसे मैक्रो विस्तार को विफल करते हैं जब इसे करना चाहिए? कुछ विशेष सुविधा के बिना, परीक्षण केस संकलित नहीं होगा और इसलिए पूरी परीक्षा परियोजना संकलित नहीं होगी।

मुझे लगता है कि इस ज़ोर रूप

errors(code: => _): List[CompileError] 

जो भीतरी मैक्रो का संकलन त्रुटियों रिटर्न का एक और मैक्रो की आवश्यकता होगी। यह जांचने के लिए आवश्यक होगा कि चेतावनियां तब होती हैं जब उन्हें चाहिए और ...

क्या स्कैला मैक्रोज़ के लिए कुछ मौजूदा परीक्षण सुविधाएं हैं?

+4

+1। यह भी देखें [स्कैला में गैर-संकलन के परीक्षण के बारे में यह प्रश्न] (http://stackoverflow.com/q/15125457/334519) और [स्कैला मैक्रोज़ को दस्तावेज करने के बारे में यह] [http://stackoverflow.com/q/13840784/334,519)। –

+0

पूर्व प्रश्न के पास आशाजनक उत्तर हैं। सूचक के लिए धन्यवाद! –

उत्तर

1
+0

क्या यह उत्तर अभी भी मैक्रोज़, @ गुइलाइम का परीक्षण करने के लिए बेवकूफ तरीका है? –

+1

@ केविनमेनिथ इस परियोजना को बहिष्कृत कर दिया गया है। एक अद्यतित तरीके के लिए ट्रैविस ब्राउन की टिप्पणी देखें। –

2

जाँच करने के लिए चहचहाना eval इस्तेमाल कर सकते हैं आप ScalaTest से assertDoesNotCompile उपयोग कर सकते हैं।

import org.scalatest.FunSuite 

class TypeTest extends FunSuite { 
    test("String vals can't hold ints") { 
    assertDoesNotCompile("val x: String = 1") 
    } 
} 

आप एक स्ट्रिंग जब अपने मैक्रो विस्तार assertDoesNotCompile करने में विफल करना चाहिए का एक उदाहरण युक्त पारित कर सकते हैं: यहाँ इस का उपयोग करते हुए स्काला typechecker का परीक्षण करने का एक उदाहरण है। ध्यान दें कि यदि आपको इसकी आवश्यकता महसूस होती है तो assertCompiles भी है।

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