我已經寫了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);
}
}
我的問題是我總是無論何時我嘗試做斷言檢查:預付款對象。 另外我注入了Mocked爲EnterpriseCustomerVerificationService enterpriseCustormerVerificationServiceMock; 請問我的商業邏輯有問題嗎?
你有沒有調試過它,並檢查你是否嘲笑正確的值? – Stultuske
是的,我已經調試過它。但對象預付款在每次顯示爲空時都沒有獲得任何價值。 –
Mockito.when( creditCheckRepository.getCSGPrepay(「123」,「456」,「789」,「User」)) .thenReturn(prepays);爲什麼你硬編碼的價值,使用匹配器,而不是像anyString,任何() –