স্কালায় পরীক্ষার সংস্থানগুলি কীভাবে অ্যাক্সেস করবেন?


137

আমি একটি ফাইল আছে data.xmlমধ্যে src/test/resources/

আমি একটি নতুন মধ্যে যে ফাইল কিভাবে পড়তে পারেন FileReaderআমার পরীক্ষা data.scalaমধ্যে src/test/scala/?

উত্তর:


202

সংস্থানগুলি getResourceজাভা যে বিশেষ স্টাইলের পদ্ধতিগুলি ব্যবহার করে তা ব্যবহার করে বোঝানো হয় to আপনার দৃষ্টান্ত স্থাপন 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জন্য জাভা ডক্সের পদ্ধতিগুলি দেখুন : শ্রেণি


8
আমাকে getClassLoaderনির্দেশিকায় একটি যুক্ত করতে হয়েছিল। ফলাফলটি ছিলSource.fromURL(getClass.getClassLoader.getResource("simulation.json"))
মোবিয়াস

1
নিশ্চিত Moebius মন্তব্য getClassLoaderপ্রয়োজন। এটি ছাড়াই পরীক্ষায় শ্রেণীর শ্রেণিবিন্যাস ডিরেক্টরি অন্তর্ভুক্ত রয়েছে। কিছু একটা ~/lighthouse/target/scala-2.12/test-classes/com/mycompany/myapp/module1/utils/blabla/getClass.getClassLoader.getResource()অংশটি ব্যবহার করে com/mycompany/myapp/module1/utils/blabla/সরানো হয়েছে
পলিমেরেজ

28

অন্য বিকল্প (বিশেষত যদি আপনার হিসাবে একটি হিসাবে সংস্থান অ্যাক্সেস প্রয়োজন File); এর মাধ্যমে এর পথ অর্জন করা:

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

হিসাবে স্কেলে উল্লেখ করা হয়েছে রিসোর্স ফোল্ডারে ফাইলের ফাইল পাথ পান


24

থেকে SBT কপি ফাইল src/test/resourcesথেকে target/scala-[scalaVersion]/test-classes

আপনি নিম্নলিখিত হিসাবে আপনার পরীক্ষার সংস্থানগুলি অ্যাক্সেস করতে পারেন:

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

এটি ধরে নেওয়া যায় যে testData.txtএটি সরাসরি ফোল্ডারের নীচে ছিল src/test/resources। অন্যথায়, কোনও উপ-ডিরেক্টরি যুক্ত করুন।


0

এবং গুগু পেয়ারা থেকে সাধারণত যেখানে getClass.getResourceকাজ করে না (কখন বা ঠিক কীভাবে তা জানেন না বা যত্ন নেই)com.google.common.io.Resources.getResource

testCompile "com.google.guava:guava:18.0"

-4

পরীক্ষার সময় আপনি ফাইল সিস্টেমে কোথায় আছেন তা জানতে, ডামি পরীক্ষায় আপনি এরকম কিছু করতে পারেন:

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

তারপরে, আপনি যখন নিজের পথটি জানেন, তখন আপনার পরীক্ষায় আপনি এটি ব্যবহার করতে পারেন:

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

এর অধীন ফাইলগুলি src/test/resourcesপরীক্ষার CLASSPATH এ রয়েছে তাই কোডগুলি বিল্ড ডিরেক্টরি কাঠামো সম্পর্কে সচেতন না হয়েই পরীক্ষাগুলি এটিকে অ্যাক্সেস করতে পারে।
জেসেক লাসকোভস্কি

2
এটি দরকারী হতে পারে, যদি কারও যদি সংখ্যার গণনা করা প্রয়োজন (উদাহরণস্বরূপ কোডটির নামগুলি নির্দিষ্ট করা নেই তবে সেটির নীচে রাখা কোনও ফাইল ব্যবহার করবে)।
আকৌপ্পি


আপনি যখন আপনার অ্যাপ্লিকেশনটি
ফ্যাটযুক্ত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.