mirror of
https://github.com/alibaba/testable-mock.git
synced 2025-01-10 20:30:11 +08:00
2.3 KiB
2.3 KiB
已知问题
1. 访问私有方法或私有成员代码在IDE提示语法错误
使用@EnablePrivateAccessor
注解后访问私有方法或成员变量,虽然能正常通过编译,但在IDE上依然会提示语法错误。
这个问题与使用Lombok
工具库后使用生成的getter
和setter
会被IDE报语法错误一样,需要通过IDE插件来解决。
当前Testable
尚未提供相关插件。也可以改用PrivateAccessor
工具类来访问私有成员,来避免IDE的异常信息。
2. 通过IDE运行单个测试用例时,Mock功能失效
这是由于IDE运行单个测试用例时只会运行maven-surefire-plugin
插件,跳过了testable-maven-plugin
插件执行,导致Mock功能所需的JavaAgent没有随测试启动。
解决方法有两种:
方法一:在单元测试配置的"虚拟机参数(VM Option)"属性值末尾添加JavaAgent启动参数:-javaagent:${HOME}/.m2/repository/com/alibaba/testable/testable-agent/0.2.2/testable-agent-0.2.2.jar
PS:请将路径中的版本号替换成实际使用的版本号
方法二:不使用testable-maven-plugin
插件,直接配置JavaAgent参数到maven-surefire-plugin
插件上。(JMockit
也是使用了这种方法)配置方法为:
PS:请将路径中的版本号替换成实际使用的版本号
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-javaagent:${settings.localRepository}/com/alibaba/testable/testable-agent/0.2.2/testable-agent-0.2.2.jar</argLine>
</configuration>
</plugin>
用这种方法需要注意,如果项目同时还使用了Jacoco
的on-the-fly
模式(默认模式)统计单元测试覆盖率,则需要在参数中再添加一个@{argLine}
参数,完整配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>@{argLine} -javaagent:${settings.localRepository}/com/alibaba/testable/testable-agent/0.2.2/testable-agent-0.2.2.jar</argLine>
</configuration>
</plugin>