我正在尝试使用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;
}
答案 0 :(得分:0)
assertThatThrownBy
会失败,在你的情况下,() -> batchManager.insertBatchParts(batchPartViewNext, userName)
应该抛出ValidationError
,但显然没有。{/ p>