使用 ScalaTest 在 IntelliJ 中测试 Scala

语言

Scala 有多个库和测试方法,但在本教程中,我们将演示 ScalaTest 框架中一个名为 FunSuite 的常用选项。

这假设你知道 如何在 IntelliJ 中构建项目

设置

  1. 在 IntelliJ 中创建一个 sbt 项目。
  2. 添加 ScalaTest 依赖项
    1. 将 ScalaTest 依赖项添加到 build.sbt 文件
       libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.11" % Test
      
    2. 如果你收到“build.sbt 已更改”的通知,请选择自动导入
    3. 这两个操作将导致 sbt 下载 ScalaTest 库。
    4. 等待 sbt 同步完成;否则,AnyFunSuitetest() 将无法识别。
  3. 在左侧的项目窗格中,展开 src => main
  4. 右键单击 scala 并选择 新建 => Scala 类
  5. 将其命名为 CubeCalculator,将 类型 更改为 object,然后按 Enter 键或双击 object
  6. 用以下代码替换原代码
     object CubeCalculator:
       def cube(x: Int) =
         x * x * x
    

创建测试

  1. 在左侧的项目窗格中,展开 src => test
  2. 右键单击 scala 并选择 新建 => Scala 类
  3. 将类命名为 CubeCalculatorTest,然后按 Enter 键或双击 class
  4. 用以下代码替换原代码
     import org.scalatest.funsuite.AnyFunSuite
        
     class CubeCalculatorTest extends AnyFunSuite:
       test("CubeCalculator.cube") {
         assert(CubeCalculator.cube(3) === 27)
       }
    
  5. 在源代码中,右键单击 CubeCalculatorTest,然后选择 运行“CubeCalculatorTest”

理解代码

让我们逐行了解一下

  • class CubeCalculatorTest 表示我们正在测试对象 CubeCalculator
  • extends AnyFunSuite 让我们可以使用 ScalaTest 的 AnyFunSuite 类的功能,例如 test 函数
  • test 是来自 FunSuite 库的函数,该函数收集函数体中断言的结果。
  • "CubeCalculator.cube" 是测试的名称。你可以随意命名,但一种约定是“类名.方法名”。
  • assert 采用布尔条件并确定测试是通过还是失败。
  • CubeCalculator.cube(3) === 27 检查 cube 函数的输出是否确实是 27。=== 是 ScalaTest 的一部分,它提供清晰的错误消息。

添加另一个测试用例

  1. 在第一个检查 0 的立方体的 assert 语句后添加另一个 assert 语句。
  2. 通过右键单击 CubeCalculatorTest 并选择“运行 CubeCalculatorTest”来再次重新运行测试。

结论

您已经看到了一种测试 Scala 代码的方法。您可以在 官方网站 上了解有关 ScalaTest 的 FunSuite 的更多信息。

此页面的贡献者