powermockito.whennew
时间: 2023-04-24 14:04:42 浏览: 121
PowerMockito.whenNew是PowerMockito框架中的一个方法,用于模拟一个新对象的创建过程。它可以用来测试一些不易测试的代码,例如静态方法、私有方法等。使用该方法时,需要先使用PowerMockito.mock静态方法来模拟要创建的对象。然后使用whenNew方法来指定模拟对象的构造函数,并返回模拟对象。最后可以使用thenReturn等方法来指定模拟对象的行为。
相关问题
优化这段代码:public class RouterUtil_bakTest { private Routerutil routerUtil = new RouterUtilo); private RestTemplateUtil restTemplate = new RestTemplateUtil(); private ApiResponse apiResponse = new Apiresponse(); @Test public void doPostForobjTest() { try { Map<String,string> testMap = new HashMap<>(); testMap.put("test","test"); apiresponse.setData(testMap); Mockito.when(restTemplate.postForObj(Mockito.any(JSONObject.class),Mockito.anystringO,Mockito.anyO))).thenreturn(apiResponse); //Class<?>[] paramTypes =new Class[]{Object.class,string.class,Class.class}; //PowerMockito.stub(PowerMockito.method(RestTemplateUtil.class,"postFor0bj",paramTypes)).toreturn(apiResponse); //PowerMockito.when(restTemplate.postFor0bj(RestTemplateUtil.class,"postForObj",Mockito.any())).thenReturn(apiresponse); Apiresponse result = routerUtil.doPostForObj( value: "test", url: "test"); }catch (Exception e){ e.printstackTrace((); }
public class RouterUtil_bakTest {
private Routerutil routerUtil = new RouterUtilo);
private RestTemplateUtil restTemplate = new RestTemplateUtil();
private ApiResponse apiResponse = new Apiresponse();
@Test
public void doPostForobjTest() {
try {
Map<String, String> testMap = new HashMap<>();
testMap.put("test", "test");
apiResponse.setData(testMap);
Mockito.when(restTemplate.postForObj(Mockito.any(JSONObject.class), Mockito.anyString(), Mockito.any())).thenReturn(apiResponse);
Apiresponse result = routerUtil.doPostForObj(value: "test", url: "test");
} catch (Exception e) {
e.printStackTrace();
}
}
}
优化建议:
1. 可以将测试类名改为 RouterUtilTest。
2. 可以将类成员变量的命名规范化,遵循驼峰命名法。例如:ApiResponse 改为 apiResponse。
3. 可以将 try-catch 语句块进行更细粒度的拆分,以便明确具体发生了什么异常。
4. stub 和 when 方法用途相同,建议只保留其中一个方法。
5. 可以将测试方法的注释改为清晰、明确的描述该方法的功能和作用。
powermockito安装教程
很抱歉,根据规则3,我不能提供安装教程以外的信息。但是,我可以为您提供以下安装教程:
1.在pom.xml文件中添加以下依赖项:
```xml
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>
```
2.在测试类中使用@PrepareForTest注释来准备需要mock的类,例如:
```java
@RunWith(PowerMockRunner.class)
@PrepareForTest({ClassToMock.class})
public class MyTest {
// ...
}
```
3.使用PowerMockito.mockStatic()方法来mock静态方法,例如:
```java
PowerMockito.mockStatic(ClassToMock.class);
Mockito.when(ClassToMock.staticMethod(Mockito.anyString())).thenReturn("mockedResult");
```
4.使用PowerMockito.whenNew()方法来mock构造函数,例如:
```java
ClassToMock instance = PowerMockito.mock(ClassToMock.class);
PowerMockito.whenNew(ClassToMock.class).withNoArguments().thenReturn(instance);
```