मैं एक फ़ाइल है 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"))