Scala 中的 IntelliJ 要求在继承自具体 class 的 class 中实现抽象成员

IntelliJ in Scala asking to implement abstract members in a class inheriting from a concrete class

我正在尝试使用 scalatest 3.0.5 进行测试。我按照建议 on the official website.

创建了我的摘要 class 来定义我的设置和我的第一个具体测试 class
abstract class TestSpec extends FunSuite

class MyFirstTest extends TestSpec {

    test("This is a test") {assert(1 == 1)}

}

但是 Intellij 显示以下错误:

MyFirstTest must either be declared abstract or implement abstract member 'getTestNameForReport(s:String):String' in 'org.scalatest.Suite'

阅读源代码后,FunSuite是一个具体的class

我尝试将scalatest 版本更改为2.2.6,但出现了同样的问题。我试图实现抽象成员,但 IntelliJ 要求重写某些方法,例如 execute,因此这似乎不是一个好主意。

根据记录,我正在使用 Maven 来构建我的项目,并且它构建得非常完美。问题是我无法从 IDE 运行 进行测试,因为会显示警告。

如果一切构建完美,并且如果您可以 运行 在 IntelliJ 之外进行测试,那可能只是一个 IDE 问题。

尝试按照 those steps 使 cache/restart 无效并告诉我这是否解决了您的问题。

我最终通过删除我的项目并使用 Maven 从 this archetype 创建一个新项目来解决我的问题。我认为我的问题是因为我不知何故搞砸了我的 pom。

如果您遇到类似问题,这里有一些可能的修复方法(感谢@Argurth):

  • those steps (link to a similar issue)
  • 之后使 cache/restart 无效
  • 按照步骤 检查 JDK 是否在 IntelliJ 中正确设置(参见第一个答案中的评论)。
  • 将 maven 的 JDK 设置为您的 JAVA_HOME。 (见下面的截图,可以在 IntelliJ 中通过 File > Setting 获取)

我不得不从库中删除旧版本的 scalatests。 ProjectStructure->libraries->[locate scalatest 0.9 ...] - 删除