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.setField(unwrap(gatherResultService), "paymentReconService", mock); return mock; } @SuppressWarnings("unchecked") public static <T> T unwrap(T proxiedInstance) { if (proxiedInstance instanceof Advised) { try { return unwrap((T) ((Advised) proxiedInstance).getTargetSource().getTarget()); } catch (Exception e) { Assert.fail("对代理对象进行unwrap发生异常:" + proxiedInstance.getClass()); } } return proxiedInstance; } }

你可能感兴趣的:(spring,exception,Class,import,Autowired,PostBack)