用PowerMock写Java单元/集成测试 - 配置篇

最近一直在重构公司的Java代码,由于原来并没有相关的测试,所以在重构之前先加上单元测试可以对重构代码的正确性有一定的保障作用,研究了一下如何使用PowerMock写测试代码(单元测试+集成测试)

PowerMock基于Mockito做了部分改进,主要是加入了protected以及static方法的Mock,暂时还不支持对于 private方法进行Mock,因为认为private方法本身不应该单独被拿出来做UnitTest,这里对这个问题暂时不展开讨论

开始配置

项目用的是Maven,如果是用Gradle的稍微变下格式就可以了,这里我用的是2.0.9版

<properties>
    <powermock.version>2.0.9</powermock.version>
</properties>

其后开始添加会用到的依赖库

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>${powermock.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito2</artifactId>
    <version>${powermock.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>net.bytebuddy</groupId>
    <artifactId>byte-buddy</artifactId>
    <version>1.12.18</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>net.bytebuddy</groupId>
    <artifactId>byte-buddy-agent</artifactId>
    <version>1.12.18</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
    </dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4-rule-agent</artifactId>
    <version>${powermock.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-classloading-xstream</artifactId>
    <version>${powermock.version}</version>
    <scope>test</scope>
</dependency>

powermock-module-junit4-rule-agent/powermock-classloading-xstream这个两个库是用于集成测试的,然后其实我是想用JUnit5的,不过由于目前PowerMock只支持JUnit4,所以下部分注解必须使用JUnit4的库

  • @RunWith注解:在JUnit5中,@RunWith被@ExtendWith取代,所以这里我们只使用@RunWith,在集成测试中@RunWith需要搭配SpringJUnit4ClassRunner.class使用,即

@RunWith(SpringJUnit4ClassRunner.class)
  • @Test:只使用Junit4的注解,即

import org.junit.Test; //JUnit4

而非

import org.junit.jupiter.api.Test; //JUnit5
  • @Before以及@After:必须使用JUint4

import org.junit.After;
import org.junit.Before;

Assertions可以使用JUnit5的,我就直接使用了JUnit5的Assertions

下一文章我们会涉及到一些规范的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修猫写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值