Junit测试课程失败



我已经为以下方法写了junit测试:

@Service
public class EnterpriseCustomerVerificationService {
 @Autowired
 CreditCheckRepository creditCheckRepository;
 public String FTACheck(StandardInputHeader charterHeaderInputInfo,
            Holder<StandardOutputHeader> charterHeaderOutputInfo, Long sys, Long prin, Long agent)
            throws EnterpriseCustomerVerificationException {
        String prepay = null;
        List<String> prepays = null;
        charterHeaderOutputInfo.value = new StandardOutputHeader(charterHeaderInputInfo);
        prepays = creditCheckRepository.getCSGPrepay(sys.toString(), prin.toString(), agent.toString(),
                charterHeaderInputInfo.getAuditUser());
        if (prepays != null && prepays.size() > 0) {
            prepay = prepays.get(0);
        }
        return prepay;
    }
}

creditcheckrepository类

@Component
public class CreditCheckRepository {
    @Autowired
    SPGetCSGPrepay spGetCSGPrepay;
    public List<String> getCSGPrepay(String sys, String prin, String agent, String auditUser) {
        return spGetCSGPrepay.execute(sys, prin, agent, auditUser);
    }
}

测试方法

package com.charter.enterprise.credit.service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
import javax.xml.ws.Holder;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.Spy;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.test.util.ReflectionTestUtils;
@RunWith(MockitoJUnitRunner.class)
public class EnterpriseCustomerVerificationServiceTest {
    @InjectMocks
    EnterpriseCustomerVerificationService 
    enterpriseCustormerVerificationServiceMock;

    @Mock
    CreditCheckRepository creditCheckRepository;
    @Rule
    public ExpectedException thrown = ExpectedException.none();
    StandardInputHeader charterHeaderInputInfo;
    Holder<StandardOutputHeader> charterHeaderOutputInfo;
    @Before
    public void setup() {
        charterHeaderInputInfo = new StandardInputHeader();
        charterHeaderInputInfo.setAuditUser("test");
        charterHeaderInputInfo.setClientIp("127.0.0.1");
        charterHeaderOutputInfo = new Holder<StandardOutputHeader>();

        ReflectionTestUtils.setField(
                enterpriseCustormerVerificationServiceMock,
                "creditCheckRepository", creditCheckRepository);
    }
    @Test
        public void getFTACheckTest() {
            String auditUser = "User";
            Long sys = 123L;
            Long prin = 456L;
            Long agent = 789L;
            List<String> prepays = new ArrayList<String>();
            prepays.add("ABCDEF");
            Mockito.when(
                    creditCheckRepository.getCSGPrepay("123", "456", "789", "User"))
                    .thenReturn(prepays);
            // Mockito.when(spGetCSGPrepay.execute("123", "456","789",
            // "User")).thenReturn(prepays);
            String prepay = enterpriseCustormerVerificationServiceMock.FTACheck(
                    charterHeaderInputInfo, charterHeaderOutputInfo, sys, prin,
                    agent);
            assertNotNull(prepay);
    }
}

我的问题是,每当我尝试进行断言检查时,我总是会变得无效:预付费对象。我也将注射量为enterprisecustomerverificationservice enterprisormerverificationservicemock;请建议我我的业务逻辑有问题吗?

您对您的参数做了一些糟糕:

creditCheckRepository.getCSGPrepay("123", "456", "789", "User"))

应该是

creditCheckRepository.getCSGPrepay("123", "456", "789", "test"))

作为旁注,您应该使用ArgumentMatchers(如果使用旧版本,可能是Matchers)来避免此类问题:

Mockito.when(creditCheckRepository.getCSGPrepay(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(),
   ArgumentMatchers.anyString(), ArgumentMatchers.anyString())).thenReturn(prepays);

相关内容

  • 没有找到相关文章

最新更新