화이트 박스 테스트를 위해서는 각 코드 라인이 적어도 한 번은 커버해야합니다.
@apimodelProperty ( "Disciple Category")@manytoone // 주제 범주 필드를 비어 있도록 설정하십시오 @joincolumn (nullable = false) @jsonView ({nonejsonView.class, MeasurementUnitCategoryJsonView.getAllByDisciplineID.class}) 개인 징계;대상을 비어 있지 않은 경우의 이전 예를 들어 보면 두 가지 상황을 테스트해야합니다. 비어있을 때 예외는 비어 있지 않을 때 정상적으로 저장해야합니다.
@testpublic void savetest () {logger.debug ( "새로운 측정 범주"); 측정 hateCategory MeasurementUnitCategory = new MeasurementUnitCategory (); logger.debug ( "테스트 저장"); MeasurementUnitCategoryService.save (MeasurementUnitCategory);} 여기서 우리는 save 메소드를 불렀지 만 IDE 예외를 포착하도록 촉구하지 않았지만 save 메소드가 예외를 던지지 않는다는 의미는 아닙니다. 확인되지 않은 RuntimeException 또는 파생 예외를 던질 수 있습니다.
이 예외를 테스트하기 위해 먼저이 코드 줄을 실행하여 어떤 예외가 나타나는지 확인합니다.
org.springframework.dao.dataintegrityviolationException : 문을 실행할 수 없습니다. SQL [N/A]; 제약 [null]; 중첩 예외는 org.hibernate.exception.constraintViolationException입니다. 명령을 실행할 수 없습니다
org.hibernate.exception.constraintViolationException에 의한 원인 : 명령문을 실행할 수 없습니다
org.h2.jdbc.jdbcsqlexception : "snailline_id"열에 허용되지 않음; SQL 문 :
Measurement_Unit_category (id, smartline_id, is_asc) 값 (null,?,?)에 삽입하십시오 [23502-194]
이 레코드를 삽입 할 때 JdbcSQLException 세 가지 예외가 있습니다. 그러면 예외는 ConstraintViolationException 유발하고 새로운 예외는 DataIntegrityViolationException 유발합니다.
Caused by 실제로 예외 캡슐화입니다. 예를 들어, 기본 층은 예외를 제외 할 수 있지만 일반적으로 비교적 높은 수준에서 예외를 처리합니다.
이것을 예로 들어보십시오. DataIntegrityViolationException 데이터는 예외를 위반하고 많은 유형의 예외가 발생할 수 있으므로이 예외의 처리 방법은 동일하거나 유사합니다.
기본 레이어가 JdbcSQLException 던지면 예외를 catch 위해 메소드를 호출하고 예외 (제한 위반 예외)를 사용하여 새로운 예외 ConstraintViolationException 구축 한 다음 상단 계층에 버린 다음 상단 레이어로 포착하고 새로운 예외를 DataIntegrityViolationException 하여 우리에게 던졌습니다. 우리는 그것을 처리하지 않았고, 콘솔은 오류를보고합니다.
캡슐화를 유지하고 위로 던지는 이점은 예외를 사용하여 유사한 상황을 처리 할 수 있다는 것입니다. 그런 다음이 예외를 처리 할 때 소스를 추적하고 원인에 대한 정확성을 유지할 수 있습니다. 이 패키지를 사용할 수없는 경우 오류를 정확하게 찾으려면 catch 기본 예외로 직접 이동해야합니다.
좋아, 여기서 잡아야 할 예외는 응용 프로그램에서 우리에게 던진 DataIntegrityViolationException 예외입니다.
@testpublic void savetest () {logger.debug ( "기본 테스트 데이터 준비"); 측정 hateCategory MeasurementUnitCategory = new MeasurementUnitCategory (); 부울 catchexception = false; logger.debug ( "테스트 저장, 예외를 던질 예정"); try {measurementUnitCategoryService.save (geasurementUnitCategory); } catch (dataintegrityViolationException e) {catchexception = true; } logger.debug ( "캡처 예외가 참"); assertthat (catchexception) .istrue ();}테스트를 실행하고 패스하십시오.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.