AssertJ正在抛出测试失败

时间:2017-02-03 15:47:09

标签: spring-boot junit4 assertj

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

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

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

testcase的代码是

@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;
    }

1 个答案:

答案 0 :(得分:0)

如果给定的lambda没有抛出异常,

assertThatThrownBy会失败,在你的情况下,() -> batchManager.insertBatchParts(batchPartViewNext, userName)应该抛出ValidationError,但显然没有。{/ p>