我想使用Mockito编写一些测试,但是我的项目不是Maven项目,因此我无法按照Mockito文档的建议添加依赖项。
所以我下载了mockito-core-2.21.0-javadoc.jar
,mockito-core-2.21.0.jar
和mockito-core-2.21.0-sources.jar
并将它们作为包装好的jar添加到我的项目中。
我可以导入库和所有这些东西,但是看来模仿工具不起作用。
我尝试了一个简单的示例,取自here:
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import java.util.Iterator;
import org.junit.Test;
....
@Test
public void iterator_will_return_hello_world(){
//arrange
Iterator i=mock(Iterator.class);
when(i.next()).thenReturn("Hello").thenReturn("World");
//act
String result=i.next()+" "+i.next();
//assert
assertEquals("Hello World", result);
}
但是,在运行测试时,它会失败。失败的行是Iterator i=mock(Iterator.class);
。
我想念什么吗?
答案 0 :(得分:4)
Mockito对非Mockito项目具有传递依赖。
这是“ mvndependency:tree”运行的输出:
[INFO] \- org.mockito:mockito-core:jar:2.8.47:test
[INFO] +- net.bytebuddy:byte-buddy:jar:1.6.14:test
[INFO] +- net.bytebuddy:byte-buddy-agent:jar:1.6.14:test
[INFO] \- org.objenesis:objenesis:jar:2.5:test
基于此, 您需要将bytebuddy和objenesis jar添加到您的非Maven版本中。
答案 1 :(得分:3)
基于您在注释中提供的堆栈跟踪,看来您的项目仍缺少其他依赖项。因此,您也必须手动下载这些文件。
堆栈跟踪指向“ net.bytebuddy”,您可以在此处查看编译依赖性: https://mvnrepository.com/artifact/org.mockito/mockito-core/2.21.0
我尝试自己运行示例,而这些是我必须手动添加的依赖项才能使工作正常进行:
找出需要哪些依赖项的一种方法是实际使用maven依赖项树命令。