복붙노트

[SCALA] 어떻게 스칼라에서 테스트 리소스에 액세스하려면?

SCALA

어떻게 스칼라에서 테스트 리소스에 액세스하려면?

내가 SRC / 테스트 / 자원 파일 인 data.xml이 /.

어떻게 SRC / 테스트 / 스칼라 / 내 테스트 data.scala에 신규 FileReader에 해당 파일을 읽을 수 있습니까?

해결법

  1. ==============================

    1.자원은 자바가 제공하는 특별한의 getResource 스타일의 방법을 사용하여 액세스 할 수 있도록 의미한다. 에서 인 data.xml 존재의 당신의 예를 감안할 때 $ SBT_PROJECT_HOME / SRC / 테스트 / 자원 /, 당신이 그렇게 같은 테스트에 액세스 할 수 있습니다 :

    자원은 자바가 제공하는 특별한의 getResource 스타일의 방법을 사용하여 액세스 할 수 있도록 의미한다. 에서 인 data.xml 존재의 당신의 예를 감안할 때 $ SBT_PROJECT_HOME / SRC / 테스트 / 자원 /, 당신이 그렇게 같은 테스트에 액세스 할 수 있습니다 :

    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"))
    

    당신이 내용을 읽고 테스트 데이터를 사용하는 것과 같이, 당신이 그것으로 원하는 모든 것을 할 수 물론 소스는 이제 단지 일반 스칼라 IO 객체입니다.

    (스트림으로, 예를 들어)뿐만 아니라 자원을 얻을 수있는 다른 방법이 있습니다. 클래스 : 자바 문서에의 getResource 방법에 대한 자세한 내용을 찾습니다.

  2. ==============================

    2.또 다른 대안 (당신이 파일로 액세스 리소스를 필요 특히); 를 통해 그것의 경로를 얻는 것입니다 :

    또 다른 대안 (당신이 파일로 액세스 리소스를 필요 특히); 를 통해 그것의 경로를 얻는 것입니다 :

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

    같은 자원 폴더에있는 파일의 파일 경로를 얻을 스칼라에서 지적되었다

  3. ==============================

    3.타겟 / scala- [scalaVersion] / 테스트 클래스 SRC / 테스트 / 자원으로부터 SBT 복사 파일.

    타겟 / scala- [scalaVersion] / 테스트 클래스 SRC / 테스트 / 자원으로부터 SBT 복사 파일.

    다음과 같이 당신의 검사 결과의 리소스에 액세스 할 수 있습니다 :

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

    그것은 testData.txt이 폴더 SRC / 테스트 / 자원의 바로 아래라고 가정 않습니다. 그렇지 않으면, 하위 디렉토리를 추가합니다.

  4. ==============================

    4.그리고 getClass.getResource 일을하지 않는 경우에 (모르는 나 때 또는 왜 정확하게 신경), 구글 구아바에서 com.google.common.io.Resources.getResource 보통 않습니다

    그리고 getClass.getResource 일을하지 않는 경우에 (모르는 나 때 또는 왜 정확하게 신경), 구글 구아바에서 com.google.common.io.Resources.getResource 보통 않습니다

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

    5.당신이 테스트 중에 파일 시스템에있는 위치를 알고, 당신은 더미 테스트 같은 것을 할 수 있습니다 :

    당신이 테스트 중에 파일 시스템에있는 위치를 알고, 당신은 더미 테스트 같은 것을 할 수 있습니다 :

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

    그런 다음, 당신이 당신의 경로를 알고있을 때, 테스트에 당신은 그것을로 사용할 수 있습니다 :

    new File("./src/test/resources/yourfile.xml")
    
  6. from https://stackoverflow.com/questions/5285898/how-to-access-test-resources-in-scala by cc-by-sa and MIT license