รูปแบบของ ScalaTest
FlatSpec และ FunSuite
รูปแบบของ ScalaTest เป็นบทเรียน Scala for Backend Engineering & Functional Programming ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Scala for Backend Engineering & Functional Programming และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 4 บทเรียน
ScalaTest คืออะไร
ScalaTest เป็นกรอบการทดสอบที่มีผู้ใช้มากที่สุดสำหรับ Scala จุดเด่นคือมีรูปแบบการทดสอบหลายแบบ ช่วยให้ทีมเลือกไวยากรณ์ที่เหมาะกับพื้นฐานของตนได้
การเพิ่มการพึ่งพา
เพิ่ม ScalaTest เป็นการพึ่งพาสำหรับการทดสอบใน build.sbt ขอบเขต % Test จะป้องกันไม่ให้สิ่งนี้ถูกรวมไว้ในอาร์ติแฟกต์สำหรับใช้งานจริง
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.18" % Testทำไมจึงมีหลายรูปแบบ
แต่ละทีมอาจชอบขนบที่แตกต่างกัน ผู้มีประสบการณ์กับ xUnit มักชอบ FunSuite ส่วนทีมที่ขับเคลื่อนด้วยพฤติกรรมมักชอบ FlatSpec หรือ WordSpec ScalaTest รองรับทั้งหมดบนกลไกเดียวกัน คุณจึงเลือกรูปแบบต่อโครงการเพื่อให้สอดคล้องกันได้
AnyFunSuite
AnyFunSuite ใช้รูปแบบ test("name") { ... } ซึ่งคุ้นเคยสำหรับผู้ใช้ JUnit แต่ละบล็อก 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 หรือข้ามการทดสอบหนึ่งรายการโดยใช้ ignore แทน test/in ทั้งสองวิธีทำให้ชุดการทดสอบยังผ่าน พร้อมส่งสัญญาณว่ายังมีงานที่ต้องทำ
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:
- เพิ่ม ScalaTest ด้วยขอบเขต
% Test AnyFunSuite: บล็อกtest("...") { }AnyFlatSpec: หัวข้อshouldพฤติกรรมin { }AnyFunSpec:describe/itที่ซ้อนกัน- เลือกรูปแบบเดียวต่อโครงการ และเรียกใช้ด้วย
sbt test
เรียนรู้ Scala ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 39
- บทเรียน
- 143
คำถามที่พบบ่อย
บทเรียน “รูปแบบของ ScalaTest” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “รูปแบบของ ScalaTest” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Scala for Backend Engineering & Functional Programming ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบของ ScalaTest”
FlatSpec และ FunSuite คุณปฏิบัติ Scala for Backend Engineering & Functional Programming ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Scala for Backend Engineering & Functional Programming หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Scala for Backend Engineering & Functional Programming บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “รูปแบบของ ScalaTest” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Scala for Backend Engineering & Functional Programming นี้ได้ไหม
ได้ บทเรียน Scala for Backend Engineering & Functional Programming ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- รูปแบบของ ScalaTest
- ตัวจับคู่
- การทดสอบตามคุณสมบัติ
- การจำลองและชุดข้อมูลทดสอบ