You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ScalaTest测试Scala项目时编译报错的原因排查

问题描述

我在IntelliJ中通过SBT搭建了一个新的Scala项目,编写了以下基础类:

Person.scala

package learning.functional

case class Person(
                name: String
                 )

Main.scala

package learning.functional

import learning.functional.person

object Main{
    val p = Person("John")
}

PersonTest.scala

import learning.functional.Person
import org.scalatest.FunSuite

class PersonTest extends FunSuite {
  test("test person") {
    val p = Person("John")
    assert(p.name == "John")
  }
}

运行sbt test时抛出如下错误:

## Exception when compiling 1 sources to /Users/johndooley/Desktop/Scala/scala-learning/target/scala-2.13/test-classes
[error] java.lang.AssertionError: assertion failed: 
[error]   unexpected value engine in trait FunSuite final <expandedname> private[this]
[error]      while compiling: /Users/johndooley/Desktop/Scala/scala-learning/src/test/scala/PersonTest.scala

我的build.sbt文件内容如下:

ThisBuild / scalaVersion := "2.13.10"

libraryDependencies += "org.scalatest" % "scalatest_2.10" % "1.9.1"

lazy val root = (project in file("."))
  .settings(
    name := "scala-learning"
  )

我已尝试清理缓存重启、执行clean、update、compile操作,但均无效,请问该问题的原因是什么?


问题原因与解决方案

核心问题是Scala版本与ScalaTest版本完全不兼容:

  • 你使用的Scala版本是2.13.10,但依赖的ScalaTest是针对Scala 2.10的scalatest_2.10,且1.9.1是非常老旧的版本,完全不支持Scala 2.13系列。

修复步骤:

  1. 修改build.sbt中的ScalaTest依赖,使用适配Scala 2.13的3.x版本:
ThisBuild / scalaVersion := "2.13.10"

libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.15" % Test

lazy val root = (project in file("."))
  .settings(
    name := "scala-learning"
  )
  • 用%%替代%,它会自动匹配当前项目的Scala版本,无需手动写_2.13后缀;
  • 添加% Test标识,让该依赖仅在测试阶段生效,避免污染主代码依赖。
  1. 顺便修正Main.scala中的小错误:
package learning.functional

// 原代码导入的小写person是错误的,同包下可直接省略导入
object Main{
    val p = Person("John")
}

修改完成后,重新执行sbt test即可正常运行测试。

内容的提问来源于stack exchange,提问作者megadarkfriend

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:30:40