다음은 scanario입니다 :정적 테스트 데이터베이스가 없어도 DAO 클래스의 단위 테스트를 덜 취약하게 만드는 방법은 무엇입니까?
최대 절전 모드 기준 API를 사용하여 데이터베이스에서 특정 작업을 수행하는 복잡한 쿼리를 여러 개 작성하는 DAO 개체를 작업 중입니다 (예 : 여러 필드의 키워드 검색).
생성 된 쿼리가 다양한 시나리오에 적합한 지 확인하려면이 테스트를 단위 테스트해야합니다. 이를 테스트하는 한 가지 방법은 끝에서이를 확인하고 데이터베이스 상호 작용을 조롱함으로써 최대 절전 기준이 올바르게 작성되었는지 테스트하는 것입니다. 그러나 이것이 바람직하지 않은 이유는 첫째, 코드를 작성하는 것만으로도 속임수로 쓰는 것이고, 조건 자체가 최대 절전 모드로 바뀌거나 문제가되는 데이터베이스로 이동하는지 확인하지 않기 때문에 바람직하지 않습니다.
사용할 옵션은 테스트 데이터베이스에 대해 쿼리를 실행합니다. 그러나 역사적인 이유로 정적 테스트 데이터베이스 (예 : 코드가 코드의 일부로 체크인되는 데이터베이스)가 없으며 프로젝트의 송금으로 인해 프로젝트를 만들 수 없기 때문에 테스트를 통해 만족해야합니다. 프로덕션 데이터로 정기적으로 새로 고친 공유 개발 데이터베이스입니다.
이러한 문제가 새로 고쳐지면 테스트 뒤의 데이터가 변경 될 수 있으며 이로 인해 Google의 단위 테스트가 약해질 수 있습니다. 테스트에서 정확한 숫자를 사용하지 않음으로써 문제를 해결할 수 있지만 실제로는 그렇게 테스트하지 않습니다.
질문은 다음과 같습니다. 사람들이 테스트를 덜 부서지기 위해 이런 경우에 무엇을합니까? 내가 염두에두고있는 한 가지 옵션은 동일한 쿼리를 수행하는 네이티브 SQL을 실행하는 것입니다 (behaviourally - 기대 한 번호를 얻고 DAO 버전을 실행하기 위해 최대 절전 모드로 생성 된 쿼리와 정확히 동일 할 필요는 없습니다). 일치하면. 이 방법으로 쿼리의 동작을 초기 네이티브 SQL에서 항상 구현할 수 있으며 항상 올바른 숫자를 갖게됩니다.
이 상황을 관리하는 방법에 대한 의견이나 다른 의견을 보내 주시면 대단히 감사하겠습니다.
A.
UPDATE : 안부
내가 그들과 함께 잘 알고 있지만,이 회사는 아직 그 길을 내려 가서 조금씩 그 일을 할 준비가되지,/H2/더비 제안을 HSQLDB하기 단 하나의 테스트 케이스만으로는 적합하지 않습니다.
내 상대적으로 복잡한 키워드 검색이 "존 스미스"2100 일치를 반환하는지 확인하려면 : - 내가 좀 더 정교하고 싶은 내 이전 제안에 관해서
이 시나리오를 고려하십시오.
예상되는 번호를 찾으려면 데이터베이스를 분석하여 SQL 쿼리를 사용하여 번호를 알아 냈어야합니다. 테스트의 일부로 쿼리를 사용하는 단점은 무엇입니까? 그러면 기준의 동작을 테스트하고 있음을 항상 알 수 있습니다.
기본적으로 질문은 : 어떤 이유로 테스트를 위해 정적 데이터 세트를 가질 수없는 경우, 취성이없는 방식으로 통합 테스트를 수행하는 방법은 무엇입니까?
감사합니다. 그렇습니다. 올바른 수준에서 테스트를 수행하는 것과 관련하여 여러분의 관점에서 절대적으로 옳습니다. 그리고 우리는 여기서 최대 절전 모드 나 그것의 기준 API를 테스트하지 않습니다. 저는 기준이 특정 방식으로 만들어 졌는지 테스트하는 것이 효과가 없다는 것을 설명하려고했습니다. 그리고 말했듯이 우리는 기준에서 구조까지 전체 체인을 테스트해야 할 것입니다. 그게 정확히 내가 생각하고있는 것이고 당신의 의견은 그것에 많은 도움이됩니다! 건배. –