2011-03-12 17 views

उत्तर

158

संसाधनों को जावा 0 प्रदान की जाने वाली विशेष 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 अब सिर्फ एक सामान्य स्काला आईओ वस्तु है, तो आप कुछ भी आप इसके साथ चाहते हैं कर सकते हैं

, पढ़ने की तरह सामग्री और परीक्षण डेटा के लिए इसका उपयोग कर रहे हैं।

संसाधन प्राप्त करने के लिए अन्य विधियां भी हैं (उदाहरण के लिए स्ट्रीम के रूप में)। अधिक जानकारी के लिए Java Docs: Class पर getResource विधियों को देखें।

+2

मुझे निर्देश में 'getClassLoader' जोड़ना पड़ा। परिणाम 'Source.fromURL था (getClass.getClassLoader.getResource (" simulation.json "))' – Moebius

17

एसबीटी प्रतियों src/test/resources से target/scala-[scalaVersion]/test-classes पर प्रतिलिपि बनाता है।

आप इस प्रकार अपने परीक्षणों में संसाधनों का उपयोग कर सकते हैं:

Source.fromURL(getClass.getResource("/testData.txt")) 

यह मान है कि testData.txt फ़ोल्डर src/test/resources के तहत सीधे था। अन्यथा उपनिर्देशिका जोड़ें।

-3

पता करने के लिए जहां परीक्षण के दौरान फाइल सिस्टम में हैं, तो आप एक डमी परीक्षण में कुछ इस तरह कर सकते हैं:

import scala.collection.JavaConversions._ 
    for(file <- new File(".").listFiles){ 
    println(file.getAbsolutePath) 
    } 

तब, जब आप अपने पथ पता है, अपने परीक्षण में आप इसे के रूप में उपयोग कर सकते हैं:

new File("./src/test/resources/yourfile.xml") 
+0

'src/test/resource' के अंतर्गत की गई फ़ाइलें परीक्षण के क्लासस्पैट में हैं, इसलिए परीक्षण के निर्माण के बारे में जागरूक होने के बिना परीक्षण इसे एक्सेस कर सकते हैं निर्देशिका संरचना। –

+2

हालांकि यह उपयोगी हो सकता है, अगर किसी को संसाधनों की गणना करने की आवश्यकता है (यानी कोड में उनके नाम तय नहीं हैं, लेकिन वहां मौजूद किसी भी फाइल का उपयोग करेंगे)। – akauppi

+0

@akauppi यह http://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/core/io/support/PathMatchingResourcePatternResolver.html के साथ किया जा सकता है – dk14

11

एक और विकल्प (विशेष रूप से यदि आपको संसाधन को File के रूप में एक्सेस करने की आवश्यकता है); गूगल अमरूद से,

val path = getClass.getResource("/testData.txt").getPath 
val file = new File(path) 

रूप Scala get file path of file in resources folder

0

में और मामलों में जहां getClass.getResource काम नहीं करता है (पता है और न ही परवाह जब या क्यों वास्तव में नहीं है) में बताया गया है com.google.common.io.Resources.getResource: यह के माध्यम से पथ है प्राप्त करने के लिए है आमतौर पर

testCompile "com.google.guava:guava:18.0" 
संबंधित मुद्दे