如何使用java.net.InetAddress静态方法运行PowerMock v1.74
我已经读了很多关于PowerMockito模拟静态方法的文章。所以我一直在尝试使用v1(而不是v2),尽管我并不真正关心我使用的是哪个版本的PowerMockito或testNG。我想我在配置中遗漏了一些关键的细节,但我不知所措 使用Oracle Java 1.8 subprojects.gradle:如何使用java.net.InetAddress静态方法运行PowerMock v1.74,java,powermockito,Java,Powermockito,我已经读了很多关于PowerMockito模拟静态方法的文章。所以我一直在尝试使用v1(而不是v2),尽管我并不真正关心我使用的是哪个版本的PowerMockito或testNG。我想我在配置中遗漏了一些关键的细节,但我不知所措 使用Oracle Java 1.8 subprojects.gradle: testCompile group: 'org.testng', name: 'testng', version: '6.14.3'
testCompile group: 'org.testng', name: 'testng', version: '6.14.3'
testCompile group: 'org.powermock', name: 'powermock-module-testng', version: '1.7.4'
testCompile group: 'org.powermock', name: 'powermock-api-mockito', version: '1.7.4'
我检查了我的模块版本
测试班
import org.mockito.*;
import org.mockito.invocation.*;
import org.mockito.stubbing.*;
import org.powermock.core.classloader.annotations.*;
import org.powermock.modules.testng.*;
import org.testng.*;
import org.testng.annotations.*;
import java.io.*;
import java.net.*;
import static org.powermock.api.mockito.PowerMockito.*;
@PrepareForTest({java.net.InetAddress.class})
public class testClass extends PowerMockTestCase {
@Test
public void exampleTest()
throws IOException, URISyntaxException, MyCustomException {
mockStatic(InetAddress.class);
// I use these three functions, so I think I have to mock them all?
when(InetAddress.getByName(Mockito.anyString()))
.thenReturn(InetAddresses.forString("111.0.0.111"));
when(InetAddress.getByAddress(Mockito.anyObject()))
.thenCallRealMethod();
when(InetAddress.getLocalHost()).thenCallRealMethod();
MyNewClass mnc = new MyNewClass();
mnc.someCodeUsingInetAddress();
}
当从someCodeUsingInetAddress()调用函数InetAddress.getByName()时,它会编译并运行,但不会更改函数InetAddress.getByName()的行为
现在我读到我需要用
@RunWith(PowerMockRunner.class)
。但是IntelliJ不允许我从它知道的任何可能的源导入PowerMockRunner.class。这也让我想知道我应该用哪一个
org.testng.PowerMockRunner
org.testng.annotations.PowerMockRunner
org.powermock.modules.testng.PowerMockRunner
名单还在继续