模拟方法中其他类的公共方法(java)
我是莫基托的新手。 守则:模拟方法中其他类的公共方法(java),java,unit-testing,mockito,powermock,powermockito,Java,Unit Testing,Mockito,Powermock,Powermockito,我是莫基托的新手。 守则: public class A{ public A{ ... B.fff(); //the function I want to mock ... } } public class B{ public boolean fff(){ ... ... //connect DB ... } } 对于单元测试 public class ATest{ @T
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)有什么解决方案吗
谢谢。您在这里真正想做的是将B的模拟注入a。长期而言,这将需要设置一个控制反转容器,但如果这是一个简单的测试应用程序,您可以开始使用(这里的伪代码…我在手机上键入此代码): 在测试中,您将模拟B并设置预期的返回值,然后将其注入到A的构造函数中 读一些关于IOC的书——它会让你的测试更容易,从长远来看,它会让你成为一个更好的程序员 可能重复的
Public class A{
Public A(B bInstance){
This.b = bInstance;
}
Public void foo() {
B.doSomethingWithDb();
}
}