आप इस तरह की सुविधा के लिए पूछने वाले पहले व्यक्ति हैं। इसे प्राप्त करने का एक तरीका क्लीक्यू के साथ है। कुछ इस तरह:
withClue("NumberOfElements: ") { NumberOfElements() should be (5) }
आपको यह त्रुटि संदेश मिलना चाहिए:
NumberOfElements: 10 5 के बराबर नहीं था
यदि आप संदेश को पूरी तरह से नियंत्रित करना चाहते हैं तो आप एक कस्टम मैचर लिख सकते हैं। या आप इस तरह का उपयोग कर सकते हैं:
assert(NumberOfElements() == 5, "NumberOfElements should be 5")
क्या आप विस्तार से बता सकते हैं कि आपका उपयोग मामला क्या है? ऐसा क्यों है कि 10 बराबर नहीं था 5 सूंघने के लिए नहीं है, और आपको कितनी बार इसकी आवश्यकता है?
यहां आप जिस तरह का अनुरोध कर रहे हैं:
scala> import org.scalatest.matchers.ShouldMatchers._
import org.scalatest.matchers.ShouldMatchers._
scala> withClue ("Hi:") { 1 + 1 should equal (3) }
org.scalatest.TestFailedException: Hi: 2 did not equal 3
at org.scalatest.matchers.Matchers$class.newTestFailedException(Matchers.scala:150)
at org.scalatest.matchers.ShouldMatchers$.newTestFailedException(ShouldMatchers.scala:2331)
scala> class AssertionHolder(f: => Any) {
| def withMessage(s: String) {
| withClue(s) { f }
| }
| }
defined class AssertionHolder
scala> implicit def convertAssertion(f: => Any) = new AssertionHolder(f)
convertAssertion: (f: => Any)AssertionHolder
scala> { 1 + 1 should equal (3) } withMessage ("Ho:")
org.scalatest.TestFailedException: Ho: 2 did not equal 3
at org.scalatest.matchers.Matchers$class.newTestFailedException(Matchers.scala:150)
at org.scalatest.matchers.ShouldMatchers$.newTestFailedException(ShouldMatchers.scala:2331)
तो इस तरह आप लिख सकते हैं:
{ NumberOfElements() should be (5) } withMessage ("NumberOfElements:")