我正在测试的功能之一是连接到一台机器上。我想模拟 ping 方法,它实际上试图 ssh 进入机器,因为我并没有真正 ssh 进入机器。
我正在测试的课程:
public class TestMachine {
public int ping(host){
}
public boolean machineIsGood(host) {
blah blah
int val = ping(host);
blah blah blah
if(val != 0) return false;
return true;
}
}
测试类是这样的:
public class TestClass {
public void setUp() {
TestMachine tester = spy(new TestMachine());
}
public void testOne() {
when(test.ping(anyString()).thenReturn(-1);
assertFalse(tester.machineIsGood("testHost"));
}
{
问题是当我在本地运行它们时,它们工作得很好,但在我们的自动构建系统上,它似乎实际上是在调用真正的 ping 并获得身份验证异常。我将使用 mock() 而不是 spy() ,因为我读过它有点奇怪,但我只是不明白它实际上是在调用该方法有什么不同!只是想知道是否其他人有任何见解。