一、jmockit配置
变量
<properties>
<jmockit.version>1.43</jmockit.version>
</properties>
依赖
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>${jmockit.version}</version>
<scope>test</scope>
</dependency>
配置(版本1.42以上必须)
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version> <!-- or some other version -->
<configuration>
<argLine>
-javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar
</argLine>
<!-- ... -->
</configuration>
</plugin>
二、实例
2.1 被测对象
package com.test.service;
/**
* @author lu
* @date 2018/12/13
*/
public class JMockitoSupportService {
private String privateData="privateData";
private String constuctData;
private static String staticData;
{
constuctData="constuctData";
}
static{
staticData="staticData";
}
public boolean sayHello(String output){
System.out.println(output);
if(output.equals("true")){
return true;
}else{
return false;
}
}
public static boolean sayStaticHello(String output){
System.out.println(output);
if(output.equals("true")){
return true;
}else{
return false;
}
}
public final boolean sayFinalHello(String output){
System.out.println(output);
if(output.equals("true")){
return true;
}else{
return false;
}
}
public String getPrivateData() {
return privateData;
}
public String getConstuctData() {
return constuctData;
}
public static String getStaticData() {
return staticData;
}
}
2.2 测试类
import com.test.service.JMockitoSupportService;
import mockit.*;
import mockit.internal.reflection.FieldReflection;
import org.junit.Before;
import org.junit.Test;
public class JMockitNewTest {
//私有成员mock
@Injectable
String privateData="private Mock Data";
//代码块mock
@Injectable
String constuctData="constuct Mock Data";
@Injectable
public static String staticData="static Mock Data";
//测试对象
@Tested
JMockitoSupportService jMockitoSupportService;
public static class JMockitNewMockTest extends MockUp<JMockitoSupportService>{
//mock代码块和构造函数
@Mock
void $init(Invocation invocation) {
JMockitoSupportService jMockitoSupportService=invocation.getInvokedInstance();
//1.44 废弃 1.45 删除
Deencapsulation.setField(jMockitoSupportService,"staticData",staticData);
}
//mock静态代码块
@Mock
void $clinit(Invocation invocation){
}
}
@Before
public void setUp() {
new JMockitNewMockTest();
//1.45静态变量需要通过反射注入
// FieldReflection.setFieldValue(JMockitoSupportService.class.getDeclaredField("staticData")
// ,jMockitoSupportService,staticData);
}
@Test
public void testJMockit(){
System.out.println(jMockitoSupportService.getConstuctData());
System.out.println(jMockitoSupportService.getPrivateData());
System.out.println(jMockitoSupportService.getStaticData());
System.out.println(JMockitoSupportService.getStaticData());
}
}
本文介绍了如何配置和使用jmockit来模拟对象的私有变量、静态变量以及代码块,提供了详细的配置步骤和实例解析。
698

被折叠的 条评论
为什么被折叠?



