ScalaMock与scalatest

时间:2016-11-14 20:49:49

标签: scala scalatest scalamock

我是scalatest和scalamock的新手。这是我在sbt文件中的内容

name := "cakepattern"
version := "0.1"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.0.0" % "test",
  "org.scalamock" %% "scalamock-core" % "3.1.1" % "test",
  "org.scalamock" %% "scalamock-scalatest-support" % "3.1.1" % "test",
  "org.scalacheck" %% "scalacheck" % "1.13.0" % "test"
)

这是一个我试图模仿的课程

package config

import dto.User
import services.AuthServiceComponent
import org.scalatest.mockito.MockitoSugar._
import services.impl.DefaultUserAuthServiceComponent


trait MockAuthServiceComponent extends AuthServiceComponent{

  val x = mock[AuthServiceLike]

  type AuthService = x.type
  override val userAuthService = x
}

当我做sbt test:compile时,我收到以下错误

[error] missing or invalid dependency detected while loading class file 'MockitoSugar.class'.
[error] Could not access term mockito in package org,
[error] because it (or its dependencies) are missing. Check your build definition for
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
[error] A full rebuild may help if 'MockitoSugar.class' was compiled against an incompatible version of org.
[error] missing or invalid dependency detected while loading class file 'MockitoSugar.class'.
[error] Could not access type MockSettings in value org.mockito,
[error] because it (or its dependencies) are missing. Check your build definition for
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
[error] A full rebuild may help if 'MockitoSugar.class' was compiled against an incompatible version of org.mockito.
[error] missing or invalid dependency detected while loading class file 'MockitoSugar.class'.
[error] Could not access type Answer in value org.stubbing,
[error] because it (or its dependencies) are missing. Check your build definition for
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
[error] A full rebuild may help if 'MockitoSugar.class' was compiled against an incompatible version of org.stubbing.
[error] three errors found
[error] (test:compileIncremental) Compilation failed

我错过了什么?

[编辑]

所以我之前遇到的问题已经解决了,但现在我得到了这个

Error:scalac: missing or invalid dependency detected while loading class file 'AbstractMockFactory.class'.
Could not access type NoArgTest in trait org.scalatest.Suite,
because it (or its dependencies) are missing. Check your build definition for
missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
A full rebuild may help if 'AbstractMockFactory.class' was compiled against an incompatible version of org.scalatest.Suite.

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

尝试将Mockito添加到您的sbt文件中:

libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.0.0" % Test,
  "org.scalamock" %% "scalamock-core" % "3.1.1" % Test,
  "org.scalamock" %% "scalamock-scalatest-support" % "3.1.1" % Test,
  "org.scalacheck" %% "scalacheck" % "1.13.0" % Test,
  "org.mockito" % "mockito-all" % "1.10.19" % Test
)

小心,它是一个简单的"%"而不是一个双重的(它是一个java依赖)

此处的其他版本:https://mvnrepository.com/artifact/org.mockito/mockito-all如果1.10.19与您的代码库不兼容

编辑:

不确定这有助于解决您的第二个问题,但请在SBT控制台中尝试:

> clean
> compile

答案 1 :(得分:1)

版本< 3.3.0与Scalatest 3 +不兼容。

我建议更新到scalamock 3.4.2(写作时的最新版本)。

您随时可以在Maven Central上找到最新版本。

此外,无需指定自动拉入的scalamock-core。

答案 2 :(得分:0)

scalacheck 3.2依赖于scalatest 2.1.3,但你使用了scalatest 3.0.0,所以它们不兼容。删除scalatest依赖将解决问题。

相关问题