@RunWith(classOf[MockitoJUnitRunner])
class ScalaTest {
var x = mock[java.util.Map]
val y = mock[ClassA]
val z = mock[ClassB]
}
无论我在我的pom文件中设置什么依赖项,我都无法让Mock工作。编译器说不能解析符号Mock
和ClassOf
。我在下面展示了我的依赖项:
<dependency>
<groupId>org.scalamock</groupId>
<artifactId>scalamock-scalatest-support_${scala.version}</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.scalamock</groupId>
<artifactId>scalamock-junit3-support_${scala.version}</artifactId>
<version>2.4</version>
</dependency>
测试依赖性是:
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_${scala.version}</artifactId>
<version>2.0.M3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.9.0</version>
<scope>test</scope>
</dependency>
这些是我的进口商品:
import org.junit.{Test, Before}
import org.junit.runner.RunWith
import org.mockito.runners.MockitoJUnitRunner
有什么建议吗?
答案 0 :(得分:3)
我不知道mockito但是根据
您的班级ScalaTest
应该扩展单元套件,并且应该混合使用MockitoSugar(提供mock
方法)。
如果在注释声明classOf
中无法解析RunWith
,则可能需要使用较新的Scala版本(2.8或更高版本)。
答案 1 :(得分:0)
您正在为ScalaTest和JUnit导入ScalaMock支持类,但您根本没有使用ScalaTest(您正在使用JUnit和我不熟悉的自定义运行器)并且似乎正在使用根据Stefan对yoru问题的评论,错误的特征组合。
如果您想使用ScalaTest作为测试运行器,您应该将一个相关的Suite类与MockitoSugar混合使用(请遵循ScalaTest documentation):
// First, create the mock object
val mockCollaborator = mock[Collaborator]
// Create the class under test and pass the mock to it
classUnderTest = new ClassUnderTest
classUnderTest.addListener(mock)
// Use the class under test
classUnderTest.addDocument("Document", new Array[Byte](0))
classUnderTest.addDocument("Document", new Array[Byte](0))
classUnderTest.addDocument("Document", new Array[Byte](0))
classUnderTest.addDocument("Document", new Array[Byte](0))
// Then verify the class under test used the mock object as expected
verify(mockCollaborator).documentAdded("Document")
verify(mockCollaborator, times(3)).documentChanged("Document")