-
scalatest-3.2.3 의 property based testscala/scalatest 2023. 1. 25. 19:54
문제
https://wefree.tistory.com/77 의 property based test 를 scalatest-3.2.3 버전을 이용해 작성해 보자.
코드
build.sbt 에 scalatest, scalacheck 라이브러리를 추가한다.
libraryDependencies ++= Seq( "org.scalatest" %% "scalatest" % "3.2.3" % Test, "org.scalatestplus" %% "scalatestplus-scalacheck" % "3.1.0.0-RC2" % Test )
테스트를 작성한다.
import org.scalacheck.Gen import org.scalatest.BeforeAndAfter import org.scalatest.funsuite.AnyFunSuite import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks object Calculator { def lastDigit(n: Int): Int = math.abs(n) % 10 def isDivisibleByFive(n: Int): Boolean = n % 5 == 0 } class CalculatorTest extends AnyFunSuite with BeforeAndAfter with ScalaCheckPropertyChecks { test("lastDigit table test") { val table = Table( ("number", "lastDigit"), // First tuple defines column names (0, 0), (1, 1), (-1, 1), (12, 2), (-12, 2), (123, 3) ) forAll(table)((number, last) => assert(Calculator.lastDigit(number) === last)) } test("isDivisibleByFive property test") { forAll { x: Int => whenever(x >= 0) { val last = Calculator.lastDigit(x) assert(Calculator.isDivisibleByFive(x) === (last == 0 || last == 5)) } } } test("isDivisibleByFive Gen test") { val numbers: Gen[Int] = Gen.choose(-1000, 1000).map(_ * 3) forAll(numbers) { x: Int => val last = Calculator.lastDigit(x) assert(Calculator.isDivisibleByFive(x) === (last == 0 || last == 5)) } } }
'scala > scalatest' 카테고리의 다른 글
BeforeAndAfterAll (0) 2023.03.21 BeforeAndAfter (0) 2023.03.21 scalatest-3.0.5 에서 scalacheck 의 generator 사용하기 (0) 2022.02.19 scalatest-3.0.5 의 property based test (0) 2021.11.14