我是Mockito的新手。 对于代码:
public class A{
public A{
...
B.fff(); //the function I want to mock
...
}
}
public class B{
public boolean fff(){
...
... //connect DB
...
}
}
对于单元测试,
public class ATest{
@Test
public void test(){
A mock_a = new A();
Assert.assertNotNull(mock_a);
}
}
由于功能" B.fff()"需要连接数据库,所以我想模拟函数" B.fff()"返回true或false,让测试可以完全无环境地工作。
我尝试了一些代码:
public class ATest{
@Test
public void test(){
PowerMockito.when(B.fff()).thenReturn(true);
Assert.assertNotNull(new A());
}
}
但它不起作用。
使用Mockito(或PowerMock)有什么解决方案吗?
感谢。
答案 0 :(得分:1)
你真正想要做的是将B模拟注入A.长期需要设置控制容器的反转,但如果这是一个简单的测试应用程序,你可以从这里开始(伪代码...我在手机上输入了这个内容:
Public class A{
Public A(B bInstance){
This.b = bInstance;
}
Public void foo() {
B.doSomethingWithDb();
}
}
在测试中,您将模拟B并设置预期的返回值,然后将其注入A的构造函数中。
在IOC上做一些阅读 - 这将使您的测试更容易,并且从长远来看将使您成为更好的程序员。