我将要测试的一个功能是ssh到一台机器上。我想要模拟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(),因为我读到它有点奇怪,但我就是不明白为什么会有差异,它为什么会实际调用该方法!只是想知道是否还有其他人有任何见解。