ScalaTest - Option, Either

2024. 5. 8. 09:00· 프로그래밍 공통/테스트
목차
  1. Option test
  2. Either test
반응형

ScalaTest는 Scala에서 기본적으로 제공해주는 타입인 Option, Either에 대한 테스트도 지원해줍니다.

이 역시 간편하게 trait 형태로 제공해주어 필요할경우 상속받아 사용하면 됩니다.

 

Option test

Option 테스트를 위해서 OptionValues trait를 지원해줍니다.

해당 trait를 상속받으면 Option 타입에 implicit function으로 value 함수를 신규로 지원해주어 이를 통해 assertion 비교를 진행하면 됩니다.

 

Option의 값을 비교하기 위해 간단히 get을 사용하면 되지 않나 얘기하실 수도 있는데 None에 get을 실행하면 NoSuchElementException이 던져져서 테스트가 실패하지만 어느 테스트에서 실패했는지 StackDepth를 지원해주지 않으므로 꼭 value 함수를 통해 비교해야 합니다.

value를 통해 테스트가 실패하면 TestFailedException 이 던져지므로 테스트 실패에 대한 정보가 표시됩니다.

 

import org.scalatest.OptionValues
import org.scalatest.funspec.AnyFunSpec
import org.scalatest.matchers.should.Matchers
class OptionSpec extends AnyFunSpec with Matchers with OptionValues {
describe("Option 비교") {
it("비어있는 값은 None이다") {
val sut = Option.empty[Int]
sut shouldBe None
}
it("비어있지 않은 값은 Some이다") {
val sut = Option(123)
sut.value shouldBe 123
}
}
}

 

Either test

Either 테스트를 위해서 EitherValues trait를 지원해줍니다.

해당 trait를 상속받으면 Either의 left, right 타입에 implicit function으로 value 함수를 신규로 지원해주어 이를 통해 assertion 비교를 진행하면 됩니다.

 

Either 역시 get으로 테스트를 진행할 수 있지만 Option과 동일하게 StackDepth를 지원해주지 않으므로 꼭 value 함수를 통해 비교해야 합니다.

 

Either의 Right을 비교하고 싶다면 right.value를 사용하면 되지만, scala 2.13 부터 Either.right이 deprecated 되었으므로 바로 value를 호출하면 됩니다.

Either의 Left를 비교하고 싶다면 left.value를 사용하면 됩니다.

 

import org.scalatest.EitherValues
import org.scalatest.funspec.AnyFunSpec
import org.scalatest.matchers.should.Matchers
class EitherSpec extends AnyFunSpec with Matchers with EitherValues {
describe("Either 비교") {
it("정상 값은 Right이다") {
val sut = Right(123)
sut.value shouldBe 123
}
it("비정상 값은 Left이다") {
val sut = Left(new RuntimeException("error"))
sut.left.value shouldBe a[RuntimeException]
}
}
}
반응형
  1. Option test
  2. Either test
'프로그래밍 공통/테스트' 카테고리의 다른 글
  • ScalaTest - Exception
  • ScalaTest - Table Base Property Test
  • ScalaTest - Assertion
  • ScalaTest - Style
sleeptoy
sleeptoy
프로그래밍 관련 지식과 경험을 공유합니다
sleeptoy
쉬어가는 장난감
sleeptoy
반응형
전체
오늘
어제
  • 분류 전체보기 (50)
    • Scala (28)
      • 언어 (6)
      • EffectiveScala (15)
      • Dependency injection (2)
      • Collections API (5)
    • Java (1)
      • 언어 (1)
    • 함수형 프로그래밍 (3)
    • Database (3)
      • Slick (3)
    • 프로그래밍 공통 (13)
      • WEB (2)
      • 개발론 (0)
      • 테스트 (11)
    • 트러블슈팅 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 단위테스트
  • Functor
  • java
  • Dependency Injection
  • scala
  • Slick
  • collections api
  • RESTful
  • implicit class
  • restfulapi
  • TEST
  • scalatest
  • effective scala
  • database
  • twitter
  • Functional programming
  • either
  • Collections
  • scala slick
  • 함수형 프로그래밍

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
sleeptoy
ScalaTest - Option, Either
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.