我被要求模拟一个Java类,以便测试团队可以测试他们,但当我试图搜索不同类型的嘲笑和所有我得到与junit一起嘲笑什么是最好的方式来嘲笑一个java类与出JUNIT
例如与junit的mockit。有人可以帮助我走出这个困惑
我被要求模拟一个Java类,以便测试团队可以测试他们,但当我试图搜索不同类型的嘲笑和所有我得到与junit一起嘲笑什么是最好的方式来嘲笑一个java类与出JUNIT
例如与junit的mockit。有人可以帮助我走出这个困惑
免责声明:我会建议你使用像JUnit的框架
然而,这是一个使用的Mockito工作的例子可以运行一个Java应用程序,并且不依赖在JUnit上。
您需要在类路径上使用mockito-all.jar才能运行此代码。
该课程正在测试Bar
的实施,该实施依赖于名为Foo
的另一个类。
import static org.mockito.Mockito.verify;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class BarTestCase {
private Bar bar; // the class under test
@Mock
private Foo foo;
public BarTestCase() {
MockitoAnnotations.initMocks(this); // initialise Mockito
bar = new BarImpl(foo);
}
public void testSomethingWithBar() {
// given
String name = "fred";
// when
bar.getUserByFirstName(name);
// then
verify(foo).doSomething(name);
// verify(foo).doSomething(""); // un-comment this line to see the test fail
}
public static void main(String[] args) {
BarTestCase myTestCase = new BarTestCase();
myTestCase.testSomethingWithBar();
System.out.println("SUCCESS!");
}
}
这些都是其他类/您将需要运行上述测试类
public interface Bar {
void getUserByFirstName(String name);
}
public class BarImpl implements Bar {
private Foo foo;
public BarImpl(Foo foo) {
this.foo = foo;
}
@Override
public void getUserByFirstName(String name) {
foo.doSomething(name);
}
}
public interface Foo {
void doSomething(String name);
}
依赖注入救援接口。你可以把你的实现放在一个接口后面,并有两个类实现它。一个用于实际生产代码,一个用于测试目的。要决定使用哪一个你可以使用某种依赖注入框架,比如spring或者其他。或者你可以使用旧的学校方式来使用系统属性来决定选择哪个实现。检查您的部署环境以获取特定于环境的设置并将其用于此目的。
(也提醒大家,他们还需要检验真正的东西在一个点或另一个测试....)
您需要发布于你正在尝试做的更多的信息。从技术上讲,你不需要在JUnit中使用Mockito,你也可以毫无困难地在生产代码中使用它,但是我必须承认我从来没有见过它 – geoand