mockito-1.10.19
powermock-的Mockito-1.7.1
powermock-1.7.4
junit 4.12
我有一个具有多个构造函数(java)的类。一旦构造函数调用另一个。我想只模拟其中一个构造函数(从另一个构造函数调用的构造函数)。不幸的是我无法更改代码 - 我只是在测试它。这是要测试的类:
import java.io.File;
import java.sql.connection;
public class Foo {
public Foo (Connection connection){
this(connection, new File ());
}
public Foo (Connection connection, File file){
// do stuff
}
// other methods
}
这是我写的测试课:
import java.io.File;
import java.sql.connection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Matchers;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.legacy.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest(Foo.class)
@PowerMockIgnore("javax.management.*")
public class FooTest {
@Test
public void testFoo() throws Exception {
Connection mockConnection = Mockito.mock(Connection.class);
Foo fooObj = Mockito.mock(Foo.class);
PowerMockito.whenNew(Foo.class).withArguments(Matchers.notNull(), Matchers.notNull()).thenReturn(fooObj);
Foo newFooObj = new Foo (mockConnection);
assertNotNull ("newFooObj should not be null", newFooObj);
}
}
问题是没有输入Foo(连接)。有什么我想念的吗?
答案 0 :(得分:0)
我使用最新的1.7.x版本的Powermock(1.7.4)尝试了您的代码,它可以按照您的需要运行。所以你可能只需要升级一些次要版本。