程序中需要调远程获取数据时-测试用例中使用Mock造挡板数据
示例:
1、加依赖
<!-- Mock依赖。 -->
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>1.47</version>
<scope>test</scope>
</dependency>
2、在工程编译启动pom中配Junit插件设置javaagent:jar包在添加依赖后写本地仓库的jar包路径即可。
……
<skiptTest>false</skiptTest>
……
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Junit插件配置。Mock用。-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<skipTests>${skiptTest}</skipTests>
<argLine>-javaagent:D:\maven\repository\org\jmockit\jmockit\1.47\jmockit-1.47.jar</argLine>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
3、被测试程序
/**
* @author wxming.
* @date 2020-6-3.
*/
@Service
public class UseConfigUtils {
//@Resource
private ConfigUtils configUtils = new ConfigUtils();
public String useConfig(){
String oneConfig = configUtils.getConfig("一个配置");
return oneConfig;
}
}
/**
* @Description TODO
* @author wxming.
* @date 2020-6-3.
*/
@Component
public class ConfigUtils {
public String getConfig(String name){
System.out.println("走远程获取了");
return "从远程获取的值";
}
}
4、测试用例
package my.mark.mybaibaoxiang.mock;
import mockit.Mock;
import mockit.MockUp;
import org.junit.Test;
/**
* @author wxming.
* @Description TODO 使用Mock数据测试。
* @date 2020-6-3.
*/
public class MockTest {
UseConfigUtils useConfigUtils = new UseConfigUtils();
@Test
public void mockOne(){
//在要调用需要mock的数据之前,new一个Mock数据出来。
new MockUp<ConfigUtils>(){
@Mock
public String getConfig(String name){
System.out.println("走mock了");
return "Mock数据的配置";
}
};
String one = useConfigUtils.useConfig();
System.out.println(one);
}
}
5、测试结果
注掉Mock代码没有mock的:
用mock的: