Scala 有多个库和测试方法,但在本教程中,我们将演示 ScalaTest 框架中一个名为 FunSuite 的常用选项。
这假设你知道 如何在 IntelliJ 中构建项目。
设置
- 在 IntelliJ 中创建一个 sbt 项目。
- 添加 ScalaTest 依赖项
- 将 ScalaTest 依赖项添加到
build.sbt
文件libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.11" % Test
- 如果你收到“build.sbt 已更改”的通知,请选择自动导入。
- 这两个操作将导致
sbt
下载 ScalaTest 库。 - 等待
sbt
同步完成;否则,AnyFunSuite
和test()
将无法识别。
- 将 ScalaTest 依赖项添加到
- 在左侧的项目窗格中,展开
src
=>main
。 - 右键单击
scala
并选择 新建 => Scala 类。 - 将其命名为
CubeCalculator
,将 类型 更改为object
,然后按 Enter 键或双击object
。 - 用以下代码替换原代码
object CubeCalculator: def cube(x: Int) = x * x * x
创建测试
- 在左侧的项目窗格中,展开
src
=>test
。 - 右键单击
scala
并选择 新建 => Scala 类。 - 将类命名为
CubeCalculatorTest
,然后按 Enter 键或双击class
。 - 用以下代码替换原代码
import org.scalatest.funsuite.AnyFunSuite class CubeCalculatorTest extends AnyFunSuite: test("CubeCalculator.cube") { assert(CubeCalculator.cube(3) === 27) }
- 在源代码中,右键单击
CubeCalculatorTest
,然后选择 运行“CubeCalculatorTest”。
理解代码
让我们逐行了解一下
class CubeCalculatorTest
表示我们正在测试对象CubeCalculator
extends AnyFunSuite
让我们可以使用 ScalaTest 的 AnyFunSuite 类的功能,例如test
函数test
是来自 FunSuite 库的函数,该函数收集函数体中断言的结果。"CubeCalculator.cube"
是测试的名称。你可以随意命名,但一种约定是“类名.方法名”。assert
采用布尔条件并确定测试是通过还是失败。CubeCalculator.cube(3) === 27
检查cube
函数的输出是否确实是 27。===
是 ScalaTest 的一部分,它提供清晰的错误消息。
添加另一个测试用例
- 在第一个检查
0
的立方体的assert
语句后添加另一个assert
语句。 - 通过右键单击
CubeCalculatorTest
并选择“运行 CubeCalculatorTest”来再次重新运行测试。
结论
您已经看到了一种测试 Scala 代码的方法。您可以在 官方网站 上了解有关 ScalaTest 的 FunSuite 的更多信息。