我想 junit 测试一个使用同一类的另一个私有方法的公共方法,我是 java 和 Junit 的新手,请指导我如何编写 junit

问题描述 投票:0回答:0

这是一节课 @服务 公共类 DataDeletionServiceImpl 实现 DataDeletionService {

/** The Constant LOGGER. */
private static final Logger LOGGER = LogManager.getLogger(DataDeletionServiceImpl.class.getName());

/** LOG_DELIMITER. */
private static final String LOG_DELIMITER = "deleteExpiredData()# "
        + "######################################################################";

/** LOG_DELIMITER_SRC_IMG. */
private static final String LOG_DELIMITER_SRC_IMG = "deleteExpiredDataFromSrcImgTable()# "
        + "######################################################################";

/** The milliseconds per day. */
private static final long MILLISECONDS_PER_DAY = 86400000; // i.e 1 Day 1*24*60*60*1000

/** The processed data retention days. */
private int processedDataRetentionDays = 0;

/** The processed data retention days for OST_OCR_SRC_IMG table. */
private int processedDataRetentionDaysForSrcImg = 0;

/** The file repository. */
@Autowired
private FileRepository fileRepository;

/** The image source repository. */
@Autowired
private ImageSourceRepository imageSourceRepository;

/** The file source service. */
@Autowired
private FileSourceService fileSourceService;

/** The image source service. */
@Autowired
private ImageSourceService imageSourceService;

/*
 * (non-Javadoc)
 * @see com.oversighttech.ocr.service.DataDeletionService#deleteExpiredData()
 */
@Override
public void deleteExpiredData() {
LOGGER.info(LOG_DELIMITER);
LOGGER.info("Starting Delete Expired Data operation. Current Time: {}", LocalDateTime.now());
final long startTime = System.currentTimeMillis();

// OCR 将删除所有 OST_OCR_FILE 记录(及其子记录说 OST_OCR_FILE_DATA) // 匹配条件,比如当前时间大于非空 EXT_ACKNOWLEDGE_DATE + //data.retention.period

final long retentionDaysInMillis = getProcessedDataRetentionDays() * MILLISECONDS_PER_DAY; 最终时间戳 deleteEligibleTimestamp = new Timestamp(startTime - retentionDaysInMillis);

LOGGER.info("deleteEligibleTimestamp={}, processedDataRetentionDays={}", deleteEligibleTimestamp, 处理数据保留天数); 最终布尔值 isDetailLoggingEnabled = parseBoolean(getProperty(IS_DELETED_FILE_DETAIL_LOGGING_ENABLED.name()));

    long count = 0;
    try {
        if (isDetailLoggingEnabled) {
            LOGGER.info("Delete Expired File Records in Batch of 100");
            while (true) {
                final List<FileEntity> files = fileRepository
                        .findTop100ByExtAcknowledgeDateBeforeOrderById(deleteEligibleTimestamp);
                // break loop if no files to delete
                if (files.isEmpty()) {
                    LOGGER.info("Expired File Records Not Found");
                    break;
                }
                fileRepository.deleteInBatch(files);
                fileSourceService.deleteFiles(files);
                count = count + files.size();
                for (final FileEntity fe : files) {
                    LOGGER.info(
                        "Deleted Expired File Record with fileName={}, extAcknowledgeDate={}, id={}, parentFileId={}",
                        fe.getFileName(), fe.getExtAcknowledgeDate(), fe.getId(), fe.getParentFileId());
                }
            }
        } else {
            LOGGER.info("Delete All Expired File Records");
            final List<FileEntity> files = fileRepository.findByExtAcknowledgeDateBefore(deleteEligibleTimestamp);
            count = fileRepository.deleteByExtAcknowledgeDateBefore(deleteEligibleTimestamp);
            fileSourceService.deleteFiles(files);
        }
    } catch (final Exception e) {
        LOGGER.error("Exception While Deleting Expired File Records.", e);
    }

    final long totalTime = System.currentTimeMillis() - startTime;
    LOGGER.info("Completed Delete Expired Data operation in {} milliseconds. {} Files deleted", totalTime, count);
    LOGGER.info(LOG_DELIMITER);
}

/** * 获取处理后的数据保留天数。 * * @return 处理后的数据保留天数秒 */ 私有 int getProcessedDataRetentionDays() { 如果 (processedDataRetentionDays == 0) { processedDataRetentionDays = 整数 .parseInt(getProperty(OcrConfigKeys.PROCESSED_DATA_RETENTION_DAYS.name())); } 返回处理过的数据保留天数; }

我试了这么多,我不知道如何进行

@ExtendWith(SpringExtension.class) 公共类 DataDeletionServiceImplTest {

@Mock
private FileRepository fileRepository;

/** The image source repository. */
@Mock
private ImageSourceRepository imageSourceRepository;

/** The file source service. */
@Mock
private FileSourceService fileSourceService;

/** The image source service. */
@Mock
private ImageSourceService imageSourceService;

private 

@InjectMocks
DataDeletionServiceImpl dataDeletionServiceImpl = new DataDeletionServiceImpl();


@Test
public void deleteExpiredData() {
    MockitoAnnotations.initMocks(this);
    
    
    dataDeletionServiceImpl.deleteExpiredData();
    
    System.out.println(IS_DELETED_FILE_DETAIL_LOGGING_ENABLED.name());
    final long startTime = System.currentTimeMillis();
    final long totalTime = System.currentTimeMillis() - startTime;
    
    assertThat(totalTime).isNotNull();
 }
java unit-testing mockito junit4 assertj
© www.soinside.com 2019 - 2024. All rights reserved.