0

我正在尝试使用 AsssertJ 在junit 中做一个异常测试用例。但我收到以下错误: 结果:

失败的测试:BatchManagerTests.testUniqueBatchpart:225 期望代码引发 throwable。

测试运行:149,失败:1,错误:0,跳过:0


测试用例的代码是

@Test
    public void testUniqueBatchpart(){
        String userName = "502689031";
        List<BatchPartView> batchPartViewList = new ArrayList();
        BatchPart batchPart = initBatchPart(new BatchPart(), 1L, 1L, 1L,  1L, false);
        BatchPart batchPartNext = initBatchPart(new BatchPart(), 2L, 1L, 1L,  2L, false);
        BatchPartView batchPartView = initBatchPartView(batchPart);     
        BatchPartView batchPartViewNext = initBatchPartView(batchPartNext);

        batchPartView = batchManager.insertBatchParts(batchPartView, userName);
        batchManager.insertBatchParts(batchPartViewNext, userName);

        assertThatThrownBy(() -> batchManager.insertBatchParts(batchPartViewNext, userName))
                            .isInstanceOf(ValidationError.class)
                            .hasMessage(" Unique constraint violation encountered");


    }

我要测试的代码是:

 public BatchPartView insertBatchParts(BatchPartView batchPartView, String userName) {
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("BatchManager:::insertBatchParts()");
        }
        Batch batch;
        BatchPartView returnBatchPartView = null;
        try {
            batch = batchRepository.findByMachineIdAndActiveTrue(batchPartView.getPart().getMachineId());
            Long falseCount = batchPartsRepository
                    .countByBatchIdInAndPartIdInAndDeletedFalse(batchPartView.getBatchId(), 
                            batchPartView.getPart().getId());

            if (null == batch) {
                batch = batchPartEngine.saveBatch(batchPartView, userName);
                returnBatchPartView = batchPartEngine.saveBatchPart(batchPartView, batch, userName);
            } else {
                if (falseCount < 1) {
                    returnBatchPartView = batchPartEngine.saveBatchPart(batchPartView, batch, userName);
                }
                else {
                    Set<BRSValidationError> errorSet = new HashSet<>();
                    errorSet.add(new BRSValidationError(ERROR, UNIQUECONSTRAINTVIOLATION));
                    if (!errorSet.isEmpty()) {
                        throw new ValidationError(errorSet);
                    }
                }
            }
        } catch (Exception ex) {
            LOGGER.error("", ex);
            Set<BRSValidationError> errorSet = new HashSet<>();
            errorSet.add(new BRSValidationError(ERROR, ex.getMessage()));
            if (!errorSet.isEmpty()) {
                throw new ValidationError(errorSet);
            }
        }
        return returnBatchPartView;
    }
4

1 回答 1

0

assertThatThrownBy如果给定的 lambda 没有抛出异常,则将失败,在您的情况下() -> batchManager.insertBatchParts(batchPartViewNext, userName)应该抛出异常,ValidationError但显然没有。

于 2017-02-03T22:11:43.353 回答