首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Powermock或EasyMock junit

PowerMock和EasyMock是两个Java单元测试框架,用于模拟和验证对象的行为。它们通常与JUnit测试框架一起使用。

  1. PowerMock:
    • 概念:PowerMock是一个扩展了EasyMock和Mockito的框架,用于模拟静态方法、私有方法、构造函数和final类等。
    • 分类:PowerMock属于Java单元测试框架的扩展。
    • 优势:PowerMock可以模拟和验证那些传统的单元测试框架无法处理的场景,如静态方法调用、私有方法调用等。
    • 应用场景:适用于需要模拟和验证静态方法、私有方法、构造函数和final类等场景的单元测试。
    • 推荐的腾讯云相关产品:腾讯云提供了云服务器(CVM)和云函数(SCF)等产品,可以用于部署和运行PowerMock测试。
  • EasyMock:
    • 概念:EasyMock是一个用于创建模拟对象的框架,用于模拟和验证对象的行为。
    • 分类:EasyMock属于Java单元测试框架。
    • 优势:EasyMock提供了简单易用的API,可以方便地创建模拟对象,并验证对象的行为。
    • 应用场景:适用于需要模拟和验证对象行为的单元测试。
    • 推荐的腾讯云相关产品:腾讯云提供了云服务器(CVM)和云函数(SCF)等产品,可以用于部署和运行EasyMock测试。

腾讯云相关产品介绍链接:

  • 腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云函数(SCF):https://cloud.tencent.com/product/scf

请注意,以上答案仅供参考,具体的推荐产品和链接可能会根据实际情况而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

EasyMock PowerMock 的简单使用(with spring Autowired)


import java.math.BigDecimal;

import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.springframework.aop.framework.Advised;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.util.ReflectionTestUtils;

@RunWith(PowerMockRunner.class)
@PrepareForTest( { PaymentReconService.class })
@PowerMockIgnore(“org.apache.log4j.*”)
public class PaymentGatherServiceTest extends PaymentServiceTestBase {

@Autowired
private GatherService gatherResultService;
@Autowired
private PaymentBaseDAO baseDAO;

/**
* 测试正常postback
*/
public void testPaymentSucc() {
PaymentReconService mock = mock();

Long pbId = 10004L;
String pbStatus = PaymentBaseEO.PB_STATUS_GATHER_SUCC;
BigDecimal succAmount = new BigDecimal(“99.3”);

try {
GatherOrderRO ro = gatherResultService.processPaymentGather(pbId, pbStatus, succAmount, succAmount);
assertNotNull(ro);

} catch (SystemException e) {
fail(e.getLocalizedMessage());
} catch (BusinessException e) {
fail(e.getBusinessCode());
}
EasyMock.verify(mock);
}

/**
* MOCK PaymentReconService实现
* @return
*/
private PaymentReconService mock() {
PaymentReconRO mockRO = new PaymentReconRO(PaymentReconRO.Status.SUCESS, “OK”);

PaymentReconService mock = EasyMock.createMock(PaymentReconServiceImpl.class);
EasyMock.expect(mock.paymentSuccessRecon(EasyMock.anyObject(Long.class))).andReturn(mockRO);
EasyMock.replay(mock);
//这里把依赖的数据注进去
ReflectionTestUtils.s

03

玩花招的PowerMock

当我们面对一个遗留系统时,常见的问题是没有测试。正如Michael Feathers在Working Effectively with Legacy Code一书中对“遗留代码”的定义。他将其简单归纳为“没有测试的代码”。真是太贴切了!正是因为没有测试,使得我们对遗留代码的任何重构都有些战战兢兢,甚至成为开发人员抵制重构的借口。从收益与成本的比例来看,对于这样的系统,我一贯认为不要盲目进行重构。因为重构的真正适用场景其实是发生在开发期间,而非维护期间。当然,提升自己的重构能力,尤其学会运用IDE提供的自动重构工具,可以在一定程度上保障重构的质量。然而,安全的做法,还是需要为其编写测试。

02
领券