即使导入了 ScalaTest,也缺少 FunSuite

Var*_*nde 9 scala scalatest

我想开始使用 ScalaTest 在 Scala 中编写简单的测试。
但是由于某种原因,我可以访问org.scalatest但不能访问org.scalatest.FunSuite
这是我的build.sbt样子:

name := "Algorithms"

version := "0.1"

scalaVersion := "2.13.3"

libraryDependencies += "org.scalactic" %% "scalactic" % "3.2.0"
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.0" % "test"
Run Code Online (Sandbox Code Playgroud)

我不明白它是否可以访问,scalatest那么为什么缺少FunSuite,FlatSpec和其他样式?

运行的输出testsbt shell

[error] <Project Path>\Algorithms\src\test\scala\Course1\Week1\MaxPairProductTest.scala:3:48: type FunSuite is not a member of package org.scalatest
[error] class MaxPairProductTest extends org.scalatest.FunSuite {
[error]                                                ^
Run Code Online (Sandbox Code Playgroud)

Mar*_*lic 18

ScalaTest 3.2.0 已经完成了对之前版本单体的模块化

ScalaTest 3.2.0 的主要变化是执行了我们在 3.0.8 和 3.1.0 中准备的模块化。因此,许多不推荐使用的名称已被删除,因为这些不推荐使用会跨越模块边界。

这意味着在 3.1.0 中,以下定义

import org.scalatest.FunSuite
 
class ExampleSuite310 extends FunSuite {}
Run Code Online (Sandbox Code Playgroud)

只会引发弃用通知

The org.scalatest.FunSuite trait has been moved and renamed. Please use org.scalatest.funsuite.AnyFunSuite instead. This can be rewritten automatically with autofix: https://github.com/scalatest/autofix/tree/master/3.1.x", "3.1.0"
Run Code Online (Sandbox Code Playgroud)

在 3.2.0 中它已被完全删除。因此,从 3.2.0 开始,您应该像这样定义

import org.scalatest.funsuite.AnyFunSuite

class ExampleSuite320 extends AnyFunSuite {}
Run Code Online (Sandbox Code Playgroud)

有关新名称的完整列表,请参阅弃用到期

请注意,我们仍然可以导入一个工件,它将传递所有子工件

libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.0" % "test"
Run Code Online (Sandbox Code Playgroud)

但是现在我们也可以选择只依赖于特定的子工件

libraryDependencies += "org.scalatest" %% "scalatest-funsuite" % "3.2.0" % "test"
Run Code Online (Sandbox Code Playgroud)