أنماط ScalaTest
FlatSpec وFunSuite
أنماط ScalaTest درس مجاني في Scala for Backend Engineering & Functional Programming على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Scala for Backend Engineering & Functional Programming، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Scala for Backend Engineering & Functional Programming 4 دروس في المجموع.
ما هي ScalaTest؟
تُعدّ ScalaTest إطار الاختبار الأكثر استخدامًا مع Scala. ومن ميزاتها المميّزة أنها توفّر عدة أنماط للاختبار، مما يتيح للفرق اختيار الصياغة التي تناسب خلفيتها.
إضافة الاعتمادية
تضيف ScalaTest كاعتمادية اختبار في build.sbt. ويضمن النطاق % Test استبعادها من artifact الإنتاجي.
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 مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 39
- الدروس
- 143
الأسئلة الشائعة
هل درس «أنماط ScalaTest» مجاني؟
نعم — نص درس «أنماط ScalaTest» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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 مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنماط ScalaTest
- Matchers
- الاختبار القائم على الخصائص
- المحاكاة وFixtures