mirror of
https://github.com/alibaba/testable-mock.git
synced 2025-01-10 20:30:11 +08:00
3.4 KiB
3.4 KiB
使用TestableMock
TestableMock
是基于源码和字节码增强的Java单元测试辅助工具,包含以下功能:
- 访问被测类私有成员:使单元测试能直接调用和访问被测类的私有成员,解决私有成员初始化和私有方法测试的问题
- 快速Mock任意调用:使被测类的任意方法调用快速替换为Mock方法,实现"指哪换哪",解决传统Mock工具使用繁琐的问题
- 辅助测试void方法:利用Mock校验器对方法的内部逻辑进行检查,解决无返回值方法难以实施单元测试的问题
在Maven项目中使用
在项目pom.xml
文件中,增加testable-processor
依赖和maven-surefire-plugin
配置,具体方法如下。
建议先添加一个标识TestableMock版本的property
,便于统一管理:
<properties>
<testable.version>0.3.2</testable.version>
</properties>
在dependencies
列表添加TestableMock依赖:
<dependencies>
<dependency>
<groupId>com.alibaba.testable</groupId>
<artifactId>testable-processor</artifactId>
<version>${testable.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba.testable</groupId>
<artifactId>testable-agent</artifactId>
<version>${testable.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
最后在build
区域的plugins
列表里添加maven-surefire-plugin
插件(如果已有此插件则只需添加<argLine>
部分配置):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-javaagent:${settings.localRepository}/com/alibaba/testable/testable-agent/${testable.version}/testable-agent-${testable.version}.jar</argLine>
</configuration>
</plugin>
</plugins>
</build>
若项目同时还使用了Jacoco
的on-the-fly
模式(默认模式)统计单元测试覆盖率,则需在<argLine>
配置中添加一个@{argLine}
参数,添加后的配置如下:
<argLine>@{argLine} -javaagent:${settings.localRepository}/com/alibaba/testable/testable-agent/${testable.version}/testable-agent-${testable.version}.jar</argLine>
参见项目java-demo
的pom.xml和kotlin-demo
的pom.xml文件。
在Gradle项目中使用
在build.gradle
文件中添加TestableMock依赖:
dependencies {
testImplementation('com.alibaba.testable:testable-processor:0.3.2')
testAnnotationProcessor('com.alibaba.testable:testable-processor:0.3.2')
testRuntimeOnly('com.alibaba.testable:testable-agent:0.3.2')
}
然后在测试配置中添加javaagent:
test {
jvmArgs "-javaagent:${classpath.find { it.name.contains("testable-agent") }.absolutePath}"
}
参见项目java-demo
的build.gradle和kotlin-demo
的build.gradle.kts文件。