ठीक है, जैसा कि मेरी टिप्पणी में बताया गया है, मुझे वास्तव में यह वही समस्या थी। मुझे Unfiltered endpoints का परीक्षण करने की आवश्यकता थी, और प्रत्येक spec के लिए सबसे अच्छा तरीका एक अंतराल के साथ एक अनफिल्टर सर्वर को स्टार्टअप करना था, spec चलाएं और फिर सर्वर को बंद करें।
import org.specs2.mutable.Specification
abstract class SpecificationBase extends Specification{
//Do setup work here
step{
println("Doing setup work...")
success
}
//Include the real spec from the derived class
include(spec)
//Do shutdown work here
step{
println("Doing shutdown work...")
success
}
/**
* To be implemented in the derived class. Returns the real specification
* @return Specification
*/
def spec:Specification
}
असल में, इस आधार वर्ग एक सेटअप कदम और वास्तविक विनिर्देश के साथ एक टियरडाउन कदम (ठोस युक्ति वर्ग में परिभाषित) के रूप में पूरा विनिर्देश असेंबल: कि पूरा करने के लिए, मैं पहली बार एक आधार विनिर्देश इस के समान परिभाषित बीच में सैंडविच। इसलिए इस आधार वर्ग का उपयोग कर एक परीक्षण इस प्रकार दिखाई देगा:
class MySpec extends SpecificationBase{ def spec =
new Specification{
"A request to do something" should{
"be successful in case 1" in {
println("Testing case 1")
success
}
"be successful in case 2" in {
println("Testing case 2")
success
}
}
}
}
जब आप इस चलाते हैं तो आप देखेंगे:
Doing setup work...
Testing case 1
Testing case 2
Doing shutdown work...
यह सही नहीं है, लेकिन यह काम करता है। क्या ऐसा करने के लिए कोई और (और संभव क्लीनर/बेहतर) तरीका है? शायद, लेकिन यह एक समाधान है जिसे आप उपयोग में देख सकते हैं।
[नीचे तिल से पहले इस दस्तावेज़ के पेज स्क्रॉल/पैरा के बाद] (http://etorreborre.github.io/specs2/guide/org.specs2 .guide.Structure.html) –
@ ओम-नाम-नाम यह केवल बताता है कि प्रत्येक मामले के आसपास कोड कैसे निष्पादित किया जाए। – lambdas
ओह, मेरा मतलब था 'टेम्पलेट' या 'ग्लोबल सेटअप/टियरडाउन' अनुच्छेद (डेटाबेस सेटअप/क्लीनअप वाला एक) :-) –