मुझे स्कैला में लिखे गए कुछ जुनीट परीक्षणों को विरासत में मिला है जिन्हें @BeforeClass semantics का उपयोग करने के लिए ठीक करने की आवश्यकता है। मैं समझता हूं कि @BeforeClass एनोटेशन केवल स्थिर विधियों पर लागू होना चाहिए। मैं समझता हूं कि "साथी" वस्तुओं (स्केल कक्षाओं के विपरीत) में परिभाषित विधियां स्थैतिक हैं। टेस्ट क्लास में व्यक्तिगत इंस्टेंस विधियों से पहले एक बार कॉल करने के लिए मुझे टेस्ट विधि कैसे मिल सकती है?स्कैला में लिखे गए जुनीट 4 टेस्ट में @BeforeClass अर्थशास्त्र को आप कैसे कार्यान्वित करते हैं?
उत्तर
आप निर्दिष्ट नहीं करते हैं कि क्या आप ओओ प्रोग्रामिंग भावना में विरासत में हैं या "किसी और से लिया गया" शब्द की भावना है।
उत्तरार्द्ध मामले में, मैं तुम्हें सलाह देते हैं कि या तो ScalaTest या Specs2 का उपयोग कर बात को फिर से लिखने और एक JUnit परीक्षण के रूप में बेनकाब (दोनों चौखटे इस समर्थन) इतना है कि यह जो कुछ भी अन्य उपकरणों और प्रक्रियाओं के साथ एकीकृत करने के लिए करेंगे आप पहले से ही जगह में है।
object TestClass {
@BeforeClass
def stuff() {
// beforeclass stuff
}
}
class TestClass {
@Test
...
}
काम करने के लिए लगता है ...
मैं स्काला के साथ इस सुविधा को लागू करने के लिए specs2 को स्थानांतरित करने के लिए किया था। मूल समस्या वाले लोगों की मदद करने के लिए बस एक उदाहरण जोड़ना जो अभी तक specs2 नहीं जानता है।
specs2 तरीका टेस्ट सूट सेट-अप और आंसू-डाउन को पूरा करने के लिए "चरण" की अवधारणा का उपयोग करता है। यदि आप जुनीट्रुनर के साथ भागते हैं तो आपकी सभी चींटी स्क्रिप्ट और आईडीई जो जुनीट का उपयोग करती हैं, उन्हें अभी भी पता चल जाएगा कि इसे कैसे चलाया जाए। यहाँ specs2 से एक परिवर्तनशील विनिर्देश का उपयोग कर एक उदाहरण है:
import org.specs2.mutable.Specification
import org.junit.runner.RunWith
import org.specs2.runner.JUnitRunner
@RunWith(classOf[JUnitRunner])
class MutableSpecs2ExampleTest extends Specification {
var firstStep: String = null
var secondStep: String = null
var thirdStep: String = null
//Steps are guaranteed to run serially
step{println("Loading Spring application context...");firstStep="Hello World"}
step{println("Setting up mocks...");secondStep = "Hello Scala"}
//The fragments should be run in parallel by specs2
"Some component Foo in my project" should{
" pass these tests" in {
println("Excersizing some code in Foo")
firstStep must startWith("Hello") and endWith("World")
}
" pass theses other tests" in {
println("Excersizing some other code in Foo")
firstStep must have size(11)
}
}
"Some component Bar in my project" should{
" give the correct answer" in {
println("Bar is thinking...")
secondStep must startWith("Hello") and endWith("Scala")
thirdStep must be equalTo null
}
}
step{println("Tearing down resources after tests...");thirdStep = "Hello Specs2"}
}
और यहाँ एक गैर परिवर्तनशील विनिर्देशन के साथ एक उदाहरण है:
import org.specs2.Specification
import org.specs2.specification.Step
import org.junit.runner.RunWith
import org.specs2.runner.JUnitRunner
@RunWith(classOf[JUnitRunner])
class Specs2ExampleTest extends Specification{
var firstStep: String = null
var secondStep: String = null
var thirdStep: String = null
def is =
"This is a test with some set-up and tear-down examples"^
p^
"Initialize" ^
Step(initializeDependencies())^
Step(createTestData())^
"Component Foo should" ^
"perform some calculation X " !testX^
"perform some calculation Y" !testY^
p^
"Tidy up" ^
Step(removeTestData())^
end
def testX = {
println("testing Foo.X")
firstStep must be equalTo("Hello World")
}
def testY = {
println("testing Foo.Y")
secondStep must be equalTo("Hello Scala")
thirdStep must be equalTo null
}
def initializeDependencies(){
println("Initializing Spring applicaiton context...")
firstStep = "Hello World"
}
def createTestData(){
println("Inserting test data into the db...")
secondStep = "Hello Scala"
}
def removeTestData(){
println("Removing test data from the db...")
println("Tearing down resources...")
thirdStep = "Hello Specs2"
}
}
- 1. स्कैला और जुनीट 4
- 2. आप जुनीट 4.x में नेस्टेड टेस्ट सूइट कैसे बनाते हैं?
- 3. आप जावास्क्रिप्ट में गार्ड क्लॉज को कैसे कार्यान्वित करते हैं?
- 4. डेल्फी में लेवेनशेटिन दूरी को आप कैसे कार्यान्वित करते हैं?
- 5. यदि मैं जुनीट 4 में एक टेस्ट क्लास को अनदेखा करता हूं, तो क्या @BeforeClass अभी भी चलता है?
- 6. आप जीएलएसएल में लिखे गए ओपनजीएल शेडर्स का परीक्षण कैसे करते हैं?
- 7. आप PHP में पेजिनेशन कैसे कार्यान्वित करते हैं?
- 8. बड़े पैमाने पर सी ++ परियोजनाओं में आप इकाई परीक्षण को कैसे कार्यान्वित करते हैं?
- 9. जुनीट 4: टेस्ट चलाने से पहले टेस्ट सूट में चीजें सेट करें (जैसे टेस्ट की @BeforeClass विधि, केवल टेस्ट सूट के लिए)
- 10. जुनीट टेस्ट केस में लॉग 4j
- 11. आप अपनी टेस्ट स्क्रिप्ट्स को व्यवस्थित/लेआउट कैसे करते हैं
- 12. आप एएसपी.नेट एमवीसी में पेजिंग कैसे कार्यान्वित करते हैं?
- 13. आयरनपीथन में आप एक इंटरफेस कैसे कार्यान्वित करते हैं?
- 14. जुनीट बेस्ट प्रैक्टिस: प्रत्येक @ टेस्ट
- 15. आप स्कैला में कास्ट चार/इंट टाइप कैसे करते हैं?
- 16. जुनीट टेस्ट केस
- 17. आप यूनिट परीक्षणों को संकुल में कैसे व्यवस्थित करते हैं?
- 18. सिंटैक्स हाइलाइटिंग को आप कैसे कार्यान्वित करते हैं?
- 19. आप + - */का उपयोग कर एक्सओआर को कैसे कार्यान्वित करते हैं?
- 20. स्कैला (टेस्ट)
- 21. गुम "जुनीट टेस्ट के रूप में चलाएं"
- 22. आप स्कैला ग्रहण प्लगइन को कैसे अनइंस्टॉल करते हैं?
- 23. एक्सकोड 3 में यूनिट टेस्ट को डीबग कैसे करते हैं?
- 24. आप जावा से स्कैला ऑब्जेक्ट्स को कैसे कॉल करते हैं?
- 25. एंड्रॉइड जुनीट टेस्ट
- 26. फ़ाइल में लिखे गए स्ट्रिंग्स लाइन ब्रेक को सुरक्षित नहीं करते हैं
- 27. जुनीट: टेस्ट यूटिल क्लास
- 28. Android पर ListActivity में संदर्भ मेनू को आप कैसे कार्यान्वित करते हैं?
- 29. स्कैला में, आप कक्षा के प्राथमिक निर्माता में स्थानीय पैरामीटर को कैसे परिभाषित करते हैं?
- 30. स्कैला में प्राथमिक कन्स्ट्रक्टर में आप स्थानीय var/val को कैसे परिभाषित करते हैं?
मैं मतलब "प्राप्त" मानव अर्थों में। आज मैं स्कैलाटेस्ट पर पढ़ रहा हूं और शायद उस दिशा में आगे बढ़ूंगा। धन्यवाद। –