例如,我有以下处理程序:
@Component
public class MyHandler {
@AutoWired
private MyDependency myDependency;
public void someMethod(Object parameter) {
...
ThirdPartyClass thirdPartyObject = new ThirdPartyClass(parameter);
thirdPartyObject.unnecessaryMethod();
...
}
}
为了测试这个,我想写这样的东西:
@RunWith(MockitoJUnitRunner.class}
class MyHandlerTest {
@InjectMocks
MyHandler myHandler;
@Mock
MyDependency myDependency;
@Test
public void testSomeMethod() {
...
myHandler.someMethor(parameter);
...
}
}
我想避免打电话给unnecessaryMethod()
。有没有办法做到这一点?
如果unnecessaryMethod()
是静态的,那么我可以使用PowerMockito进行模拟,但PowerMockito可以帮助我吗?
答案 0 :(得分:0)
我找到了答案:
int[][] bmpData = new int[10][5];
for(int x = 0; x < 10; x++) {
for(int y = 0; y < 5; y++) {
bmpData[x][y] = 127 | 127 << 8 | 127 << 16;
}
}
new BMP().saveBMP("test.bmp", bmpData);
一些Utils类:
Bitmap
测试班:
public class MyHandler {
public void someMethod() {
Utils utils = new Utils(10);
System.out.println("Should be 1 : " + utils.someMethod());
}
}
控制台输出将是:
public class Utils {
private int value = 5;
Utils () {
System.out.println("Should be mocked");
}
Utils (int param) {
this.value = param;
System.out.println("Should be mocked");
}
public int someMethod() {
System.out.println("Should be mocked");
return value;
}
}
答案 1 :(得分:0)
使用工厂实例化ThirdPartyClass可能更好吗? 在测试中你可以模拟这个工厂以避免调用方法