ScalaTest 스타일
FlatSpec과 FunSuite를 알아봅니다
ScalaTest 스타일은(는) CoddyKit의 무료 Scala for Backend Engineering & Functional Programming 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Scala for Backend Engineering & Functional Programming 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.
ScalaTest란 무엇인가요?
ScalaTest는 Scala에서 가장 널리 사용되는 테스트 프레임워크입니다. 대표적인 특징은 여러 테스트 스타일을 제공하여 팀이 자신들의 배경에 맞는 구문을 선택할 수 있다는 점입니다.
의존성 추가하기
build.sbt에서 ScalaTest를 테스트 의존성으로 추가합니다. % Test 범위를 사용하면 프로덕션 산출물에 포함되지 않습니다.
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.18" % Test왜 여러 스타일을 사용하나요?
팀마다 선호하는 관례가 다릅니다. xUnit을 오래 사용한 개발자는 FunSuite를, 행동 중심 개발을 따르는 팀은 FlatSpec이나 WordSpec을 선호합니다. ScalaTest는 하나의 엔진에서 이 모든 스타일을 지원하므로, 프로젝트마다 한 가지 스타일을 선택해 일관성을 유지할 수 있습니다.
AnyFunSuite
AnyFunSuite는 JUnit 사용자에게 익숙한 test("name") { ... } 형식을 사용합니다. 각 test 블록은 하나의 테스트 사례입니다.
import org.scalatest.funsuite.AnyFunSuite
class MathSuite extends AnyFunSuite {
test("addition works") {
assert(1 + 1 == 2)
}
test("multiplication works") {
assert(2 * 3 == 6)
}
}AnyFlatSpec
AnyFlatSpec는 명세처럼 읽힙니다. 예를 들어 "A Stack" should "pop values" in { ... }과 같이 작성합니다. 대상과 동작이 읽기 쉬운 문장을 이룹니다.
import org.scalatest.flatspec.AnyFlatSpec
class CalculatorSpec extends AnyFlatSpec {
"A Calculator" should "add two numbers" in {
assert(2 + 3 == 5)
}
it should "subtract two numbers" in {
assert(5 - 2 == 3)
}
}should와 must
FlatSpec에서는 should, must, can을 동사로 사용할 수 있습니다. 의미는 서로 바꿔 사용할 수 있으므로, 팀에서 하나를 선택해 일관되게 사용하면 됩니다.
import org.scalatest.flatspec.AnyFlatSpec
class ParserSpec extends AnyFlatSpec {
"A Parser" must "handle empty input" in {
assert("".isEmpty)
}
}it과 they
대상을 한 번 이름 붙인 후에는 it(또는 they)를 사용하여 이름을 반복하지 않고 같은 대상에 대한 동작을 더 추가할 수 있습니다.
import org.scalatest.flatspec.AnyFlatSpec
class ListSpec extends AnyFlatSpec {
"A List" should "report its size" in {
assert(List(1, 2, 3).size == 3)
}
it should "reverse correctly" in {
assert(List(1, 2).reverse == List(2, 1))
}
}AnyFunSpec
AnyFunSpec는 중첩된 describe 블록과 it 절로 테스트를 묶어 계층적이고 읽기 쉬운 출력을 제공합니다.
import org.scalatest.funspec.AnyFunSpec
class SetSpec extends AnyFunSpec {
describe("A Set") {
describe("when empty") {
it("has size 0") {
assert(Set.empty[Int].size == 0)
}
}
}
}보류 중인 테스트와 무시된 테스트
완료되지 않은 테스트는 pending으로 표시하고, 하나를 건너뛰려면 test/in 대신 ignore를 사용합니다. 두 방법 모두 작업이 남아 있음을 알리면서 테스트 모음은 성공 상태로 유지합니다.
import org.scalatest.funsuite.AnyFunSuite
class WipSuite extends AnyFunSuite {
test("feature not done") {
pending
}
ignore("flaky test") {
assert(false)
}
}스타일 선택하기
다음 지침을 참고하세요.
FunSuite— 간결하고 xUnit과 유사하며 단위 테스트에 적합합니다.FlatSpec— 읽기 쉬운 동작 문장을 사용합니다.FunSpec/WordSpec— 중첩된 명세 스타일의 그룹화를 사용합니다.
코드베이스마다 하나를 선택하고 일관되게 유지하세요.
테스트 실행하기
sbt test로 모든 테스트를 실행하거나, sbt "testOnly *CalculatorSpec"으로 하나의 테스트 모음만 실행할 수 있습니다. ScalaTest는 각 테스트 이름과 결과를 보고합니다.
sbt test
sbt "testOnly *CalculatorSpec"빠른 확인
ScalaTest 스타일에 대한 지식을 확인해 보세요.
복습
ScalaTest 스타일을 배웠습니다.
% Test범위로 ScalaTest를 추가합니다.AnyFunSuite:test("...") { }블록을 사용합니다.AnyFlatSpec: 대상should동작in { }형식을 사용합니다.AnyFunSpec: 중첩된describe/it을 사용합니다.- 프로젝트마다 한 가지 스타일을 선택하고
sbt test로 실행합니다.
자주 묻는 질문
“ScalaTest 스타일” 강의는 무료인가요?
네 — “ScalaTest 스타일” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Scala for Backend Engineering & Functional Programming 강의 전체를 잠금 해제할 수 있습니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.
“ScalaTest 스타일”에서 뭘 배우나요?
FlatSpec과 FunSuite를 알아봅니다 브라우저에서 직접 실행하는 실습 코드로 Scala for Backend Engineering & Functional Programming을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Scala for Backend Engineering & Functional Programming을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Scala for Backend Engineering & Functional Programming은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“ScalaTest 스타일” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Scala for Backend Engineering & Functional Programming 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Scala for Backend Engineering & Functional Programming 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.