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

时间:2018-10-31 13:13:48

标签: scala intellij-idea scalatest

我正在尝试使用scalatest 3.0.5实施测试。按照建议on the official website,我创建了定义设置的抽象类和第一个具体的测试类。

abstract class TestSpec extends FunSuite

class MyFirstTest extends TestSpec {

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

}

但是随后Intellij显示以下错误:

  

MyFirstTest必须声明为抽象,或在'org.scalatest.Suite'中实现抽象成员'getTestNameForReport(s:String):String'

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

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

为了记录,我正在使用Maven构建我的项目,并且它可以完美构建。问题是由于显示警告,我无法从IDE运行测试。

3 个答案:

答案 0 :(得分:1)

如果一切运行良好,并且您可以在IntelliJ外部运行测试,则可能只是IDE问题。

尝试遵循those steps来使缓存/重启无效,并告诉我是否可以解决您的问题。

答案 1 :(得分:1)

我最终通过删除项目并使用maven从this archetype创建了一个新项目来解决了问题。我认为我的问题是因为我以某种方式弄乱了pom。

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

  • 使those stepslink to a similar issue)之后的缓存/重新启动无效
  • 按照步骤linked here(请参阅第一个答案中的注释)检查JDK是否已正确放置在IntelliJ中。
  • 将maven的JDK设置为您的JAVA_HOME。 (请参见下面的屏幕快照,可以在IntelliJ中通过File> Setting来获得它)。

Maven JDK setting

答案 2 :(得分:0)

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