2011-08-23 3 views
2

Google의 testing framework 스타일에서 assert를 찾고 있는데, ASSERT_LT (a, b)와 같은 것으로 $ a가 $ b보다 작은 지 확인하고, 그렇지 않으면 오류 메시지에서 $ a 및 $ b. 지금까지 발견 한 단점은 기본적으로 유용하지 않은 것을 인쇄하지 않고 실행을 멈추는 것입니다. 어떤 포인터?스칼라에서 유익한 주장이 있습니다.

보너스 : 나는 (테스트뿐만 아니라) 어설픈 무거운 코드를 작성하기 때문에 어설 션을 빨리 평가하면 좋을 것입니다.

배경 : this code을 템플릿으로 사용하여 unittest를 작성할 때이 문제가 발생했습니다.

+0

당신은 ScalaTest 프레임 워크에 링크했습니다. ScalaTest 어설 션이 실패하면 유용한 오류 메시지가 출력되지 않는다는 말입니까? 아니면 실제로 ScalaTest를 사용하지 않고 ScalaTest와 같은 것을 원한다고 말하는 것입니까? 후자의 경우 어떻게 그것을 사용하고 싶지 않으십니까? –

+0

ScalaTest가 원하는 모든 것을 가지고 있지 않다는 말입니다. 이것은 ScalaTest에서 사용할 수있는 것을 이해하지 못하는 문제 일지 모르지만, 내가 볼 수있는 유익한 연산자는 평등을 선언 할 때만 사용할 수있는 "==="입니다. 어설 션이 실패하면 불평등을 주장하고 유익한 오류 메시지를 얻고 싶습니다. – emchristiansen

답변

4

Specs2must be_<=과 같은 수 정자를 정의합니다. 처음에는 사양에 통합해야한다고 생각했지만 matchers page의 하단에는 " 프레임 워크"이라는 자체 기능으로 재사용 할 수있는 모듈 기능이 있다고 나와 있습니다. 예를 들어, "당신은 org.specs2.matcher.MustMatchers다시을 한 결과를 얻을 수1 must be_==(1)및 같은 것을 작성하는 [같은 특성]을 재사용 할 수 있습니다."

ScalaTest에는 고유 한 matchers이 있습니다. 예 : one must be < (7).

0
def assert_<[A <% Ordered[A]](a: => A, b: => A) { 
    assert(a < b, "Assertion failed: expected %s < %s" format (a, b)) 
} 

scala> assert_<(2, 1) 
java.lang.AssertionError: assertion failed: Assertion failed: expected 2 < 1 
관련 문제