рд╕реНрдХреЗрд▓реЗрд╕реНрдЯреЗрд╕реНрдЯ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдЯреЗрд╕реНрдЯ рд░рд╛рдЗрдЯрд┐рдВрдЧ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдИрдбреАрдИ рдФрд░ рдорд╛рд╡реЗрди рд╕рд╣рд┐рдд рдЕрдиреНрдп рдЬреЗрд╡реАрдПрдо рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣рдЬрддрд╛ рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
рд╕реНрдХрд╛рдЯрд▓реИрд╕реНрдЯ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╢реИрд▓реА рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдЙрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд╢реИрд▓реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред рдЪреБрдиреА рдЧрдИ рд╢реИрд▓реА рдХреЗрд╡рд▓ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдШреЛрд╖рдгрд╛рдПрдВ рдХреИрд╕реЗ рджрд┐рдЦрддреА рд╣реИрдВ, рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдЕрдиреНрдп рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреА, рдЪрд╛рд╣реЗ рдкрд░реАрдХреНрд╖рдг рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реЛред рд▓реЗрдЦрдХ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрдЯрд╕реНрдкреАрдХ, рдФрд░ рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдлрд╝реАрдЪрд░рд╕реНрдкреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдореИрдВ рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрдВрдЧрд┐рдд рдХрд░реВрдВрдЧрд╛:
FlatSpec
рдлреНрд▓реИрдЯрд╕реНрдкреАрдХ рдЙрди рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрджрдо рд╣реИ рдЬреЛ рдмреАрдбреАрдбреА рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреАрдбреАрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдлреНрд▓реИрдЯрд╕реНрдкреАрдХ рдПрдХ рдбреАрдПрд╕рдПрд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрдерд╛рд╕рдВрднрд╡ рдирд┐рдХрдЯ рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
import org.scalatest.FlatSpec class SetSpec extends FlatSpec { "An empty Set" should "have size 0" in { assert(Set.empty.size == 0) } it should "produce NoSuchElementException when head is invoked" in { intercept[NoSuchElementException] { Set.empty.head } } }
FeatureSpec
рдлрд╝реАрдЪрд░рд╕реНрдкреАрдХ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдирд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЧреИрд░-рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХреГрддрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПред
import org.scalatest._ class TVSet { private var on: Boolean = false def isOn: Boolean = on def pressPowerButton() { on = !on } } class TVSetSpec extends FeatureSpec with GivenWhenThen { info("As a TV set owner") info("I want to be able to turn the TV on and off") info("So I can watch TV when I want") info("And save energy when I'm not watching TV") feature("TV power button") { scenario("User presses power button when TV is off") { Given("a TV set that is switched off") val tv = new TVSet assert(!tv.isOn) When("the power button is pressed") tv.pressPowerButton() Then("the TV should switch on") assert(tv.isOn) } scenario("User presses power button when TV is on") { Given("a TV set that is switched on") val tv = new TVSet tv.pressPowerButton() assert(tv.isOn) When("the power button is pressed") tv.pressPowerButton() Then("the TV should switch off") assert(!tv.isOn) } } }
FunSuite
FunSuite рдЙрди рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ xUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рдереАрдВ, рдЗрд╕ рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЖрд░рд╛рдо рд╕реЗ рд╕реНрдХреИрд▓реЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ BDD рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
import org.scalatest.FunSuite class SetSuite extends FunSuite { test("An empty Set should have size 0") { assert(Set.empty.size == 0) } test("Invoking head on an empty Set should produce NoSuchElementException") { intercept[NoSuchElementException] { Set.empty.head } } }
FunSpec
рд╕реНрдХреИрд▓реИрдЯреЗрд╕реНрдЯ рд▓реЗрдЦрдХ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рдирд╕реНрдкреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рд░реВрдмреА рдХреЗ рд▓рд┐рдП рдЖрд░рдПрд╕рдкреАрдИрд╕реА рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛
import org.scalatest.FunSpec class SetSpec extends FunSpec { describe("A Set") { describe("when empty") { it("should have size 0") { assert(Set.empty.size == 0) } it("should produce NoSuchElementException when head is invoked") { intercept[NoSuchElementException] { Set.empty.head } } } } }
WordSpec
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдкреЗрдХреНрд╕ рдФрд░ рд╕реНрдкреЗрдХреНрд╕ 2 рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреИрд▓реНрдкреЗрд╕реНрдЯ рд▓реЗрдЦрдХ рд╡рд░реНрдбрд╕реНрдкреЗрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдирдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рд╕реНрдкреЗрдХреНрд╕ рд╕реЗ рд╕реНрдХреЗрд▓реЗрд╕реНрдЯреЗрд╕реНрдЯ рддрдХ рдкреЛрд░реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдмрд╕реЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХрд╛ рд╣реИред
import org.scalatest.WordSpec class SetSpec extends WordSpec { "A Set" when { "empty" should { "have size 0" in { assert(Set.empty.size == 0) } "produce NoSuchElementException when head is invoked" in { intercept[NoSuchElementException] { Set.empty.head } } } } }
рдлреНрд▓реИрдЯрд╕реНрдкреЗрдХ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╢реАрд░реНрд╖рдХ рдПрдХ рд╡рд╛рдХреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд┐рд╖рдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдХреАрд╡рд░реНрдб рдХреЛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рдХреНрдп рдХрд╛ рдЕрдВрддред рд╢реАрд░реНрд╖рдХ рдХреЗ рдмрд╛рдж, рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╢рдмреНрдж рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╢рд░реАрд░ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рд╣реИ:
import collection.mutable.Stack import org.scalatest._ class StackSpec extends FlatSpec { "A Stack" should "pop values in last-in-first-out order" in { val stack = new Stack[Int] stack.push(1) stack.push(2) assert(stack.pop() == 2) assert(stack.pop() == 1) } it should "throw NoSuchElementException if an empty stack is popped" in { val emptyStack = new Stack[String] intercept[NoSuchElementException] { emptyStack.pop() } } }
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╛рд╡реЗ
рдкреНрд░рддреНрдпреЗрдХ рд╢реИрд▓реА рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 3 рд╡рд░реНрдЧреАрдХрд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
- рдирд┐рдпрдорд┐рдд рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдореБрдЦрд░
- рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ
- рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рд░реЛрдзрди рдХрд┐ рд╡рд┐рдзрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ
рд╕реНрдХреЗрд▓реЗрд╕реНрдЯреЗрд╕реНрдЯ рдиреЗ рдЕрдкрдиреА рдореБрдЦрд░ рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрджреНрдзрддрд┐ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдирдХ рдЕрднрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ TestFailedException рдлреЗрдВрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЦрд░ рд╡рд┐рдзрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдореБрдЦрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
val a = 5 val b = 2 assertResult(2) { a - b }
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрджрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ TestFailedException рдореЗрдВ рд╕рдВрджреЗрд╢ "рдЕрдкреЗрдХреНрд╖рд┐рдд 2, рд▓реЗрдХрд┐рди 3. рдкреНрд░рд╛рдкреНрдд" рд╣реЛрдЧрд╛ред
рдЕрд╡рд░реЛрдзрди рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ:
val s = "hi" intercept[IndexOutOfBoundsException] { s.charAt(-1) }
рдЪреВрдБрдХрд┐ рдпрд╣ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдпрд╛ рдЕрдиреНрдп рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
intercept[IndexOutOfBoundsException](s charAt -1).getMessage should be == "..."
matchers
рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рд╢рдмреНрдж рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдХреИрд▓реЗрд╕реНрдЯреЗрд╕реНрдЯ рдореЗрдВ, рдпрд╣ рдЙрди рдХреАрд╡рд░реНрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЯреЗрд╕реНрдЯ рдореИрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рд╕рд░реНрд╕ рдорд┐рдХреНрд╕рд┐рди рдХреЛ рдПрдХ рдХреНрд▓рд╛рд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕реНрдХреИрд▓реЗрд╕реНрдЯреЗрд╕реНрдЯ рдбреАрдПрд╕рдПрд▓ рдХреА рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╢реАрд░реНрд╖рдХ рдХреЗ рддрд╣рдд рдЖрдЧреЗ рдХреЛрдб рдмрд╣реБрдд рдХрдо рдпрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЙрди рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХреЗ рдХрд░реАрдм рд╣реИрдВ:
рд╕рдорд╛рдирддрд╛
4 must equal(4) "foo" must equal("foo") List("foo", "bar", "baz") must equal(List("foo", "bar", "baz")) (1, "foo") must equal((1, "foo"))
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд▓рдВрдмрд╛рдИ
"foo" must have length (3) List(1, 2, 3, 4) must have length (4) Array('A', 'B') must have length (2) List(1, 2, 3, 4) must have size (4) Array('A', 'B') must have size (2)
рд▓рд╛рдЗрди рдХреА рдЬрд╛рдБрдЪ
"foobarbaz" must startWith("foo") "foobarbaz" must endWith("baz") "foobarbaz" must include("bar") "foobarbaz" must startWith regex ("f[o]+") "foobarbaz" must endWith regex ("[ba]{2}z") "foobarbaz" must include regex ("foo[\\w]{3}baz") "foobarbaz" must fullyMatch regex ("\\w{1}oobarbaz")
рдирдВрдмрд░ рдХреА рдЬрд╛рдВрдЪ
7 must be < (8) 7 must be > (0) 6 must be <= (7) 7 must be >= (6) 13.43 must equal(13.43) 13.43 must be(13.4 plusOrMinus 0.4)
рдмреВрд▓рд┐рдпрди рдЧреБрдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
List[Int]() must be('empty)
рд╕рдВрдЧреНрд░рд╣
List(1, 2, 3, 4) must contain(2) Array("foo", "bar", "baz") must contain("bar") var users = Map(1 -> "Joe", 2 -> "Lisa", 3 -> "Dr. Evil") users must contain key (2) users must contain value ("Dr. Evil")
рд╡рд░реНрдЧ рдЧреБрдг
case class Recipe(name: String, ingredients: List[String], bakingMinutes: Int) val cookieRecipe = Recipe("cookieRecipe", List("Flour", "Sugar", "Eggs", "Love"), 30) cookieRecipe must have( 'name("cookieRecipe"), 'ingredients(List("Flour", "Sugar", "Eggs", "Love")), 'bakingMinutes(30) )
рд▓реЙрдЬрд┐рдХрд▓ рдлрдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдЪреЗрдХ рдХреЛ рдЬреЛрдбрд╝рдирд╛
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреЗрдХ рдХреЛ рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ / рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ, рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЖрдХрд╛рд░ (3) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреБрдВрдЬреА (3) рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
users must (have size (3) and contain key (3)) users must (contain value ("Mr. X") or contain value ("Joe"))
рд▓реЗрдЦ рдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рдЕрджреНрднреБрдд рд░реВрдкрд░реЗрдЦрд╛ рдХреА рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдореЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдпрд╛ рд╕реЗрд▓реЗрдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЗрд╡рд▓ рджрд┐рдЦрд╛рдП рдЧрдП рдлреАрдЪрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рд╕реБрдВрджрд░ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭрдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкрдврд╝рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдВрдЧреЗ рдЬреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реАрдм рд╣реИрдВред рдХреЛрдбред
www.scalatest.org - рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд▓