Scala for Backend Engineering & Functional Programming · บทเรียน

รูปแบบของ ScalaTest

FlatSpec และ FunSuite

บทเรียน 1 จาก 413 ขั้นตอน

รูปแบบของ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. รูปแบบของ ScalaTest
  2. ตัวจับคู่
  3. การทดสอบตามคุณสมบัติ
  4. การจำลองและชุดข้อมูลทดสอบ
← กลับไปที่ Scala for Backend Engineering & Functional Programming