使用ScalaTest时出现了一个奇怪的错误。 我有以下代码:
import org.scalatest.junit.JUnit3Suite;
import Element.elem;
class ElementSuite extends JUnit3Suite {
def testD() {
val ele = elem('x', 2, 3);
assert(ele.width === 2);
}
}
我收到一个编译错误,说“非法继承;自我类型ElementSuite不符合org.scalatest.junit.JUnit3Suite的自我类型 org.scalatest.junit.JUnit3Suite“
任何想法??
注意我直接从Martin Oderskey的书中拿到了这个例子,所以它应该可以正常工作......
答案 0 :(得分:1)
很难确切地说出问题是什么,不知道哪个版本的Scala, 您正在使用的SBT,Scalatest等,但这可以使用更新的版本。 而不是试图确定与旧的断开的确切位置 版本,我认为你可以更轻松地使用当前版本。
build.sbt:
resolvers ++= Seq(
"Sonatype releases" at "https://oss.sonatype.org/content/repositories/releases"
)
libraryDependencies += "org.scalactic" %% "scalactic" % "2.2.6"
libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.6" % "test"
测试类:
import org.scalatest.FunSuite
// Random implementation because I'm not sure what Martin's elem class is.
case class elem( someField: Char, width: Int, height: Int )
class ElemSuite extends FunSuite {
test("D") {
val ele = elem('x', 2, 3)
assert(ele.width === 2)
}
}
我认为这是你最接近书中代码的匹配。但是,我喜欢在编写测试时使用FlatSpec和FeatureSpec以及Matchers:
import org.scalatest.{FlatSpec, Matchers}
class ElemSpec extends FlatSpec with Matchers
{
it should "retrieve the correct width" in {
val ele = elem('x', 2, 3)
ele.width shouldBe 2
}
}
但是如果你是Scala的新手,你可能会更好地坚持这种风格 匹配这本书。
有关ScalaTest样式的更多信息:http://www.scalatest.org/user_guide/selecting_a_style
免责声明:我实际上正在使用最新的3.0.0候选版本,但是我 认为这些简单的测试仍然可以使用2.2.6。