문제

Junit에서 데이터 중심 테스트를 작성하는 데 무엇을 사용하십니까?

(내 정의) 데이터 중심 테스트는 일부 외부 소스 (파일, 데이터베이스, ...)의 데이터를 읽고 라인/파일/파일 당 하나의 테스트를 실행하고 결과를 마치 마치 마치 마치 마치 마치 마치 결과를 표시하는 테스트입니다. 별도의 테스트가있었습니다. 각 실행 결과는 하나의 거대한 집계가 아닌 별도로 표시됩니다.

도움이 되었습니까?

해결책

Junit4에서는 사용할 수 있습니다 매개 변수 데이터 중심 테스트를 수행하는 Testrunner.

문서화가 굉장히 잘 문서화되지는 않지만 기본 아이디어는 정적 메소드를 만드는 것입니다 (주석이 달린다. @Parameters) 객체 배열 모음을 반환합니다. 이러한 각 배열은 테스트 클래스 생성자의 인수로 사용되며, 생성자에 설정된 필드를 사용하여 일반적인 테스트 방법을 실행할 수 있습니다.

코드를 작성하여 외부 텍스트 파일을 읽고 구문 분석 할 수 있습니다. @Parameters 방법 (또는 다른 외부 소스에서 데이터를 가져 오면 테스트를 다시 컴파일하지 않고이 파일을 편집하여 새로운 테스트를 추가 할 수 있습니다.

다른 팁

이것은 @datasource와 함께 Testng가 빛나는 곳입니다. 그것이 내가 Junit보다 선호하는 이유 중 하나입니다. 다른 것들은 종속성과 병렬 스레드 테스트입니다.

나는 다음과 같은 메모리 내 데이터베이스를 사용합니다 HSQLDB "프로덕션 스타일"데이터 세트로 데이터베이스를 사전에 인포팅하거나 빈 HSQLDB 데이터베이스로 시작하여 테스트를 수행 해야하는 행으로 채울 수 있습니다. 그 외에도 나는 내 테스트를 사용하여 주니 그리고 모키토.

나는 조합을 사용한다 DBUNIT, jmock 그리고 주니트 4. 그러면 에테르를 스위트 또는 별도로 실행할 수 있습니다.

당신은 당신의 요구에 맞는 "datadriventestcase"로 테스트 케이스를 확장하는 것이 좋습니다. 다음은 작동 예입니다.http://mrlalonde.blogspot.ca/2012/08/data-driven-tests-with-junit.html

매개 변수화 된 테스트와는 달리, 이름이 잘 지정된 테스트 케이스가 가능합니다.

나는 @droidin.net과 함께 있습니다. 그것이 바로 내가하고있는 일이지만, 당신의 질문에 문자 그대로 대답하고 "문자 그대로 당신의 질문에 대답하고"junit4 매개 변수화 된 러너를 봐야합니다. DBUNIT는 그렇게하지 않습니다. 당신이 이것을 많이해야한다면, 정직하게 testng는 더 유연하지만, Junit에서 절대적으로 그것을 할 수 있습니다.

Junit Theories Runner를 살펴볼 수는 있지만, 내 기억은 데이터 중심 데이터 세트에 적합하지 않다는 것입니다. Junit은 많은 양의 외부 데이터를 사용하는 것에 관한 것이 아니기 때문에 의미가 있습니다.

비록 이것이 꽤 오래된 주제이지만, 나는 여전히 내 몫에 기여할 생각을했습니다. 데이터 중심 테스트에 대한 Junit의 지원은 더 적고 비우호적이라고 생각합니다. 예를 들어. 매개 변수를 사용하려면 생성자를 작성해야합니다. 이론 러너를 사용하면 테스트 방법으로 전달되는 일련의 테스트 데이터 세트를 제어 할 수 없습니다.

이 블로그 게시물 시리즈에서 식별 된 더 많은 단점이 있습니다. http://www.kumaranuj.com/2012/08/junits-parameterized-runner-and-data.html

이제 Junit에서 확장 된 AA 프레임 워크 인 EasyTest의 형태로 포괄적 인 솔루션이 있으며 사용자에게 많은 기능을 제공하기위한 것입니다. 주요 초점은 실제로 Junit에 의존 할 필요는 없지만 Junit을 사용하여 데이터 중심 테스트를 수행하는 것입니다. 다음은 참조를위한 Github 프로젝트입니다. https://github.com/anujgandharv/easytest

누구든지 자신의 생각/코드/제안에 기여하는 데 관심이 있다면 지금은 시간입니다. 단순히 Github 저장소로 이동하여 문제를 만들 수 있습니다.

일반적으로 데이터 중심 테스트는 작은 테스트 가능한 구성 요소를 사용하여 데이터를 처리합니다. 데이터베이스의 경우 (파일 읽기 개체 또는 모의 개체) 및 애플리케이션 모의 외부의 리소스는 다른 시스템을 시뮬레이션하는 데 사용됩니다. (웹 서비스 및 데이터베이스 등). 일반적으로 데이터와 출력을 처리하는 외부 데이터 파일이 있다는 것입니다. 이렇게하면 데이터 파일을 VCS에 추가 할 수 있습니다.

현재 ID 번호가있는 소품 파일이 있습니다. 이것은 끔찍하게 부서지기 쉬운 일이지만 무언가를 쉽게 얻을 수 있습니다. 우리의 계획은 처음에 ANT 빌드에서 -D 속성으로 이러한 ID 번호를 재정의 할 수있는 것입니다.

당사의 환경은 실행하기 전에로드 할 수없는 끔찍한 얽힌 데이터가있는 레거시 DB를 사용합니다 (예 : DBUNIT). 결국 우리는 단위 테스트가 DB를 쿼리하여 테스트중인 속성과 함께 ID를 찾은 다음 해당 ID를 단위 테스트에서 사용하는 위치로 이동하고 싶습니다. "단위 테스트"가 아니라 느리게 진행되며 통합 테스트라고 불리우지만 실제 데이터에 대해 테스트하여 앱이 테스트 데이터에 대해 완벽하게 실행되지만 실제 데이터에 실패하는 상황을 피할 수 있습니다.

일부 테스트는 인터페이스 중심이 될 것입니다.

인터페이스 호출로 데이터베이스/파일 읽기가 검색되면 단위 테스트를 통해 인터페이스를 구현하면 단위 테스트 클래스가 원하는 데이터를 반환 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top