Tôi có một tập tin data.xmltrong src/test/resources/.
Làm thế nào tôi có thể đọc tập tin đó vào một mới FileReadertrong thử nghiệm của tôi data.scalatrong src/test/scala/?
Tôi có một tập tin data.xmltrong src/test/resources/.
Làm thế nào tôi có thể đọc tập tin đó vào một mới FileReadertrong thử nghiệm của tôi data.scalatrong src/test/scala/?
Câu trả lời:
Các tài nguyên được truy cập bằng các getResourcephương thức kiểu đặc biệt mà Java cung cấp. Cho ví dụ của bạn về data.xmlviệc tham gia $SBT_PROJECT_HOME/src/test/resources/, bạn có thể truy cập nó trong một bài kiểm tra như vậy:
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"))Tất nhiên đó sourcegiờ chỉ là một đối tượng Scala IO bình thường để bạn có thể làm bất cứ điều gì bạn muốn với nó, như đọc nội dung và sử dụng nó cho dữ liệu thử nghiệm.
Có các phương pháp khác để có được tài nguyên là tốt (ví dụ như một luồng). Để biết thêm thông tin, hãy xem các getResourcephương thức trên Tài liệu Java: Class .
getClassLoaderlà cần thiết. Không có nó, đường dẫn bao gồm thư mục phân cấp lớp của lớp kiểm tra. Một cái gì đó như   ~/lighthouse/target/scala-2.12/test-classes/com/mycompany/myapp/module1/utils/blabla/. Sử dụng getClass.getClassLoader.getResource()phần com/mycompany/myapp/module1/utils/blabla/này đã bị xóa
                    Một cách khác (đặc biệt nếu bạn cần truy cập tài nguyên dưới dạng a File); là để có được đường dẫn của nó thông qua:
val path = getClass.getResource("/testData.txt").getPath
val file = new File(path)như đã được chỉ ra trong Scala lấy đường dẫn tệp của tệp trong thư mục tài nguyên
sbt sao chép các tập tin từ src/test/resourcesđến target/scala-[scalaVersion]/test-classes.
Bạn có thể truy cập các tài nguyên trong các thử nghiệm của mình như sau:
Source.fromURL(getClass.getResource("/testData.txt"))Nó không cho rằng đó testData.txtlà trực tiếp dưới thư mục src/test/resources. Thêm bất kỳ thư mục con, nếu không.
Để biết bạn đang ở đâu trong hệ thống tệp trong khi kiểm tra, bạn có thể làm một cái gì đó như thế này trong một thử nghiệm giả:
 import scala.collection.JavaConversions._
  for(file <- new File(".").listFiles ){
   println(file.getAbsolutePath)
  }Sau đó, khi bạn biết đường dẫn của mình, trong bài kiểm tra của bạn, bạn có thể sử dụng nó như:
new File("./src/test/resources/yourfile.xml")src/test/resourcesnằm trong CLASSPATH của kiểm tra để các kiểm tra có thể truy cập vào tệp mà không cần biết mã cấu trúc thư mục xây dựng.
                    
getClassLoaderhướng dẫn. Kết quả làSource.fromURL(getClass.getClassLoader.getResource("simulation.json"))