2016-11-14 4 views
1

종속성 오류 scalatest 및 스칼라 모의

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", 
    "org.mockito" % "mockito-all" % "1.10.19" 
) 

을 다음과 내가 SBT의 테스트를 할 때

package services 

import config.MockAuthServiceComponent 
import dto.{Tweet, User} 
import org.scalamock.scalatest.MockFactory 
import org.scalatest.{FlatSpec, OneInstancePerTest, Outcome} 
import org.scalatest.matchers.MatchResult 
import services.impl.DefaultTweetServiceComponent 

class DefaultTweetServiceComponentTest extends FlatSpec with MockFactory with OneInstancePerTest{ 


    val tweetServiceComponent = new DefaultTweetServiceComponent with MockAuthServiceComponent { 
    override val tweetService = DefaultTweetService 
    } 

} 

를 다음과 같이 내 scalatest 클래스는 보이는 내 build.sbt 파일을 찾습니다 : 내가 얻을 컴파일 다음과 같은 오류

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. 

MockFactory를 가져올 때 오류가 사라지는 것 같습니다. 제발 도와주세요, 내가 뭘 놓치고 있니?

감사합니다.

답변

2

"scalamock-core" % "3.1.1"을 사용해야하는 특별한 이유가 있습니까? "scalatest" % "3.0.0"과 호환되지 않는 것으로 보입니다. "scalamock-core" % "3.3.0"으로 업그레이드하면 문제가없는 것 같습니다. 아래의 코드는 나를 위해 잘 컴파일 :

name := "cakepattern" 

version := "0.1" 

scalaVersion := "2.11.8" 

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

scalacOptions ++= Seq("-feature", "-unchecked", "-deprecation", "-encoding", "utf8") 

import org.scalamock.scalatest.MockFactory 
import org.scalatest.{FlatSpec, OneInstancePerTest} 

trait MockAuthServiceComponent 

trait DefaultTweetServiceComponent { 
    val tweetService: DefaultTweetService 
} 

case class DefaultTweetService() 

class DefaultTweetServiceTest extends FlatSpec with MockFactory with OneInstancePerTest { 

    val tweetServiceComponent = new DefaultTweetServiceComponent with MockAuthServiceComponent { 
    override val tweetService = DefaultTweetService() 
    } 
} 
0

버전이 < 3.3.0 Scalatest 3+와 호환되지 않습니다.

저는 scalamock 3.4.2로 업데이트하는 것이 좋습니다.

항상 Maven Central에서 최신 버전을 찾을 수 있습니다.

또한 scalamock-core을 지정하지 않아도 자동으로 가져옵니다.