java - Junit 测试未通过。单元测试服务新手
问题描述
为我的 Spring Boot 服务方法编写单元测试,但无法通过。我是一名前端开发人员,所以我对 Java 中的单元测试不是很熟悉。multipartFile 是最让我困惑的,也是完成整个 Junit 测试。
带有模拟单元测试的 Junit4。尝试了 stackoverflow 和 google 以进行潜在的更正。
合同服务
@Slf4j
@Service
public class ContractService {
@Autowired
public ContractRepository contractRepository;
@Autowired
public JdbcTemplate jdbcTemplate;
@Autowired
public UserSettingsService userSettingsService;
@Autowired
public ContractPermissionsService contractPermissionsService;
@Autowired
public OCRSubmissionService ocrSubmissionService;
@Autowired
public ContractDocumentStorageService contractDocumentStorageService;
public Contract getContract(int contractID) {
Contract contract = contractRepository.getOne(contractID);
return contract;
}
//TODO: come back and reduce contractID / metaID to one ID.
//TODO: add trigger in DB layer for coterminous
// TODO: make sure isVisible defaults to false
/*
When adding a new contract, the following steps are taken:
1. SQL transaction is begun
2. The meta information is stored, and an ID is generated in SQL.
3. The file is stored with the corresponding document ID.
4. The meta information is updated with the document link.
5. A login, submission, and logoff are made to KTA.
6. As long as all these steps have completed, the transaction is completed
7. Otherwise, the transaction is cancelled ad an error is thrown (controller returns 500)
*/
@Transactional(rollbackFor=Exception.class)
public Contract addNewContract(Contract contract, MultipartFile file) throws Exception {
Contract newContract = this.contractRepository.save(contract);
int ID = contract.getId();
int fileID = this.contractDocumentStorageService.storeFile(file, ID);
contract.setDocumentPathDesc(Integer.toString(fileID));
this.addViewingPermissionsForSubmitter(contract);
Boolean success = this.ocrSubmissionService.SubmitContractForOCR(file, contract.getId());
if(success) {
return this.contractRepository.saveAndFlush(newContract);
} else {
throw new OCRSubmissionFailureException("Error in OCR Submission");
}
}
合同服务测试
public class ContractServiceTest {
ContractService contractServiceUnderTest;
@Before
public void setUp() {
contractServiceUnderTest = new ContractService();
contractServiceUnderTest.contractRepository = mock(ContractRepository.class);
contractServiceUnderTest.jdbcTemplate = mock(JdbcTemplate.class);
contractServiceUnderTest.userSettingsService = mock(UserSettingsService.class);
contractServiceUnderTest.contractPermissionsService = mock(ContractPermissionsService.class);
contractServiceUnderTest.ocrSubmissionService = mock(OCRSubmissionService.class);
contractServiceUnderTest.contractDocumentStorageService = mock(ContractDocumentStorageService.class);
}
@Test
public void testAddNewContract() throws Exception {
// Setup
final Contract contract = new Contract();
final MultipartFile file = null;
final Contract expectedResult = null;
// Run the test
final Contract result = contractServiceUnderTest.addNewContract(contract, file);
// Verify the results
assertEquals(expectedResult, result);
}
解决方案
推荐阅读
- c - 已解析 JSON 的 CJSON 长度
- c++ - 创建柯南 test_package 配方
- selenium - 无法从 svg 标签中获取文本
- windows - Windows bat 文件:在 bat 目录中复制文件
- c++ - C++获取std::variant当前帮助的类型的std::typeindex
- c - 范围内随机数生成器的条件语句(在 c 中)
- encryption - 如何检查字符串是无意义的还是一组英文单词
- json - 在 bash 终端中键入“npm start”时出现多个错误
- r - 是否可以使用 geom_text 将文本放在每个构面面板下方并将其与刻度线对齐?
- python - 如果不满足另一列中的条件,则尝试从 pandas 中的列返回值