मैं एक फ़ाइल है data.xmlमें src/test/resources/।
मैं उस फ़ाइल को FileReaderअपने परीक्षण data.scalaमें एक नए में कैसे पढ़ सकता हूं src/test/scala/?
मैं एक फ़ाइल है data.xmlमें src/test/resources/।
मैं उस फ़ाइल को FileReaderअपने परीक्षण data.scalaमें एक नए में कैसे पढ़ सकता हूं src/test/scala/?
जवाबों:
संसाधनों को getResourceजावा द्वारा प्रदान की जाने वाली विशेष शैली विधियों का उपयोग करके एक्सेस किया जाना है । में data.xmlहोने के अपने उदाहरण को देखते हुए $SBT_PROJECT_HOME/src/test/resources/, आप इसे इस तरह से परीक्षण कर सकते हैं:
import scala.io.Source
// The string argument given to getResource is a path relative to
// the resources directory.
val source = Source.fromURL(getClass.getResource("/data.xml"))
बेशक, जो sourceअब सिर्फ एक सामान्य स्काला आईओ ऑब्जेक्ट है, ताकि आप इसके साथ कुछ भी कर सकें, जैसे कि सामग्री पढ़ना और परीक्षण डेटा का उपयोग करना।
संसाधन प्राप्त करने के लिए अन्य तरीके भी हैं (उदाहरण के लिए एक धारा के रूप में)। अधिक जानकारी के getResourceलिए जावा डॉक्स: क्लास के तरीकों को देखें ।
getClassLoaderकी आवश्यकता है। इसके बिना पथ में परीक्षण वर्ग की श्रेणी पदानुक्रम निर्देशिका शामिल है। कुछ इस तरह ~/lighthouse/target/scala-2.12/test-classes/com/mycompany/myapp/module1/utils/blabla/। का उपयोग करते हुए getClass.getClassLoader.getResource()भाग com/mycompany/myapp/module1/utils/blabla/निकाल दिया जाता है
एक अन्य विकल्प (खासकर यदि आपको संसाधन को एक्सेस करने की आवश्यकता है File); इसके माध्यम से रास्ता प्राप्त करना है:
val path = getClass.getResource("/testData.txt").getPath
val file = new File(path)
जैसा कि स्कैला में बताया गया है कि संसाधन फ़ोल्डर में फ़ाइल का फ़ाइल पथ प्राप्त करें
sbt से फाइल कॉपी करता src/test/resourcesहै target/scala-[scalaVersion]/test-classes।
आप अपने परीक्षणों में संसाधनों का उपयोग इस प्रकार कर सकते हैं:
Source.fromURL(getClass.getResource("/testData.txt"))
यह मान लेता है कि testData.txtसीधे फ़ोल्डर के नीचे था src/test/resources। कोई उपनिर्देशिका जोड़ें, अन्यथा।
यह जानने के लिए कि परीक्षण के दौरान आप फ़ाइल सिस्टम में कहां हैं, आप डमी टेस्ट में ऐसा कुछ कर सकते हैं:
import scala.collection.JavaConversions._
for(file <- new File(".").listFiles ){
println(file.getAbsolutePath)
}
फिर, जब आप अपना रास्ता जानते हैं, तो अपने परीक्षण में आप इसका उपयोग कर सकते हैं:
new File("./src/test/resources/yourfile.xml")
src/test/resourcesपरीक्षण की कक्षा में हैं इसलिए परीक्षण बिल्ड निर्देशिका संरचना के बारे में पता किए बिना कोड तक पहुंच सकते हैं।
getClassLoaderनिर्देश में जोड़ना था । परिणाम थाSource.fromURL(getClass.getClassLoader.getResource("simulation.json"))