복붙노트

[SCALA] Scalatest - 테스트하는 방법에 println

SCALA

Scalatest - 테스트하는 방법에 println

나를에 println 문을 통해 표준 출력으로 출력을 테스트 할 수 Scalatest에 뭔가가 있나요?

지금까지 주로 ShouldMatchers와 FunSuite을 사용하고있다.

예를 들면 우리의 인쇄 출력을 확인 어떻게

object Hi {
  def hello() {
    println("hello world")
  }
}

해결법

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

    1.콘솔에서 테스트 인쇄 문에 일반적인 방법은 다르게 그래서 당신이 그 문을 가로 챌 수있는 프로그램 비트를 구성하는 것입니다. 당신은 예를 들어 출력 특성을 도입 할 수 있습니다 :

    콘솔에서 테스트 인쇄 문에 일반적인 방법은 다르게 그래서 당신이 그 문을 가로 챌 수있는 프로그램 비트를 구성하는 것입니다. 당신은 예를 들어 출력 특성을 도입 할 수 있습니다 :

      trait Output {
        def print(s: String) = Console.println(s)
      }
    
      class Hi extends Output {
        def hello() = print("hello world")
      }
    

    그리고 당신의 테스트에서 당신은 MockOutput 실제로 전화를 차단하는 다른 특성을 정의 할 수 있습니다 :

      trait MockOutput extends Output {
        var messages: Seq[String] = Seq()
    
        override def print(s: String) = messages = messages :+ s
      }
    
    
      val hi = new Hi with MockOutput
      hi.hello()
      hi.messages should contain("hello world")
    
  2. ==============================

    2.당신은 단지 제한된 기간 동안 콘솔 출력을 재 지정하려면, 콘솔에 정의없이 withErr 방법을 사용합니다 :

    당신은 단지 제한된 기간 동안 콘솔 출력을 재 지정하려면, 콘솔에 정의없이 withErr 방법을 사용합니다 :

    val stream = new java.io.ByteArrayOutputStream()
    Console.withOut(stream) {
      //all printlns in this block will be redirected
      println("Fly me to the moon, let me play among the stars")
    }
    
  3. ==============================

    3.당신은 Console.setOut (의 PrintStream)를 사용하여에에 println 쓰기를 교체 할 수 있습니다

    당신은 Console.setOut (의 PrintStream)를 사용하여에에 println 쓰기를 교체 할 수 있습니다

    val stream = new java.io.ByteArrayOutputStream()
    Console.setOut(stream)
    println("Hello world")
    Console.err.println(stream.toByteArray)
    Console.err.println(stream.toString)
    

    당신은 분명히 당신이 원하는 스트림의 모든 유형을 사용할 수 있습니다. 당신은 표준 에러와 표준 입력에 대한 것은 같은 종류의 작업을 수행 할 수 있습니다

    Console.setErr(PrintStream)
    Console.setIn(PrintStream)
    
  4. from https://stackoverflow.com/questions/7218400/scalatest-how-to-test-println by cc-by-sa and MIT license