问题出在@RunWith(PowerMockRunner.class)。
@RunWith(PowerMockRunner.class)是JUnit框架中的一个注解,用于指定测试类的运行器。它告诉JUnit使用PowerMockRunner来运行测试类,以便支持使用PowerMock框架进行单元测试。
PowerMock是一个用于增强JUnit和TestNG的测试框架,它可以模拟和修改Java中的静态方法、私有方法、构造函数等,以便更好地进行单元测试。通过使用PowerMock,开发人员可以模拟外部依赖,使得测试更加可控和可靠。
在使用@RunWith(PowerMockRunner.class)时,需要确保已经正确导入PowerMock框架的相关依赖,并且在测试类中使用了@RunWith注解来指定运行器。
PowerMockRunner的使用可以提高测试覆盖率,特别是在需要模拟静态方法、私有方法等场景下。然而,过度使用PowerMock可能会导致测试代码变得复杂,降低代码的可读性和可维护性。因此,在使用PowerMock时需要权衡利弊,根据具体情况进行选择。
腾讯云提供了一系列云计算产品,可以满足各种应用场景的需求。以下是一些与云计算相关的腾讯云产品:
请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。
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
领取专属 10元无门槛券
手把手带您无忧上云