2016-11-22 5 views
2

나는 BeforeAndAfter을 구현하는 테스트 스위트를 가지고 있으며, 테스트가 실패한 경우 내 after() 메소드를 체크인 할 수 있고, 일부 값을 계산하여 출력하는 것이 이상적입니다. 이 일을하는 내장 된 방법이 있습니까?스칼라 after() 메서드에서 테스트가 실패했는지 여부를 확인하는 방법이 있습니까?

ps. 나는 내가 할 수있는 시험/캐치 전체 테스트를 할 수 있지만 오히려 그렇게 할 줄 알았어.

답변

4

after()에서 할 수 있다고 생각하지 않지만 withFixture()을 무시하면됩니다. 필요에 따라

class ExampleSpec extends WordSpec with MustMatchers { 

    "Example" must { 
    "work correctly" in { 
     3 must be(3) 
    } 

    "not fail" in { 
     true must be(false) 
    } 
    } 

    override def withFixture(test: NoArgTest) = super.withFixture(test) match { 
    case failed: Failed => 
     val nameLen = test.name.length 
     info(s"The test '${test.name}' failed") 
     info(s"The test name is $nameLen characters long") 
     failed 
    case other => other 
    } 
} 

Sharing Fixtures을 참조, 특히 절 "재정 withFixture (NoArgTest)"

+0

고마워, 그게 내가 바라던 종류 야. – annedroiid

1

:이 방법을 사용하면 실패의 경우에 결과 및 인쇄 뭔가를 일치시킬 수 있습니다 그 후 실제 테스트를 실행 당신이 할 경우)

test("mytest") { 
     around { 

     } 
    } 

    it should "blabla" in around { 
     ... 
    } 

2 : 당신은 할 수 있습니다

1) 좋아 def around[T](code: => T) = try {code} ... 같은 것을 작성하고 사용

def mytest[T](name: String)(code: =>T) = test(name){ 
     try { 
     code 
     } ... 
    } 

을하거나 test를 오버라이드 (override) : 모두 BTW, 별도의 특성으로 수행 할 수 있습니다

override def test[T](name: String)(code: =>T) = super.test(name){ 
     try { 
     code 
     } ... 
    } 

다음 그냥 자신의 쓰기 사양을 사용할 수 없습니다. 이 alextsc의 대답

4) 빌드

P.S.에서 모든 테스트를 차단하려면 자신의 reporter 쓰기 @ 설명

3) withFixture를 오버라이드 (override) BeforeAndAfter/withFixture는 자원을 정리하기위한 것이므로 예외에 대한 액세스 권한을 제공하지 않습니다. 오류를 분석하고 다시 표시해야하는 경우 논리적으로 기자 솔루션이 더 적합 할 수 있지만 그리 편리하지는 않습니다.