JUnit 이론과 매개 변수화 된 테스트의 차이점
이론과 매개 변수화 된 테스트의 차이점은 무엇입니까?
테스트 클래스를 만들 때 구현 차이에 관심이 없습니다.
내가 이해하는 바 : 매개 변수화 된 테스트를 사용하면 테스트 케이스에 일련의 정적 입력을 제공 할 수 있습니다.
이론은 비슷하지만 개념이 다릅니다. 그이면의 아이디어는 정적 값이 아닌 가정에 대해 테스트하는 테스트 케이스를 만드는 것입니다. 따라서 내 제공된 테스트 데이터가 일부 가정에 따라 참이면 결과 주장은 항상 결정적입니다. 이것의 핵심 아이디어 중 하나는 무한한 수의 테스트 데이터를 제공 할 수 있고 테스트 케이스가 여전히 사실이라는 것입니다. 또한 종종 음수와 같은 테스트 입력 데이터 내에서 가능성의 세계를 테스트해야합니다. 정적으로 테스트하는 경우, 즉 몇 개의 음수를 제공하면 구성 요소가 모든 음수에 대해 작동 할 가능성이 매우 높다고 보장 할 수 없습니다.
내가 알 수 있듯이 xUnit 프레임 워크는 제공된 테스트 데이터의 가능한 모든 조합을 생성하여 이론의 개념을 적용하려고합니다.
데이터 기반 시나리오에서 시나리오에 접근 할 때 둘 다 사용해야합니다 (즉, 입력 만 변경되지만 테스트는 항상 동일한 주장을 반복적으로 수행함).
그러나 이론은 실험적인 것처럼 보이기 때문에 입력 데이터에서 일련의 조합을 테스트해야하는 경우에만 사용합니다. 다른 모든 경우에는 매개 변수화 된 테스트를 사용합니다.
Parameterized.class는 단일 변수로 "parametrize"테스트를 테스트하는 반면 Theories.class "parametrize"는 여러 변수의 모든 조합으로 테스트합니다.
예를 보려면 다음을 읽어보십시오.
http://blogs.oracle.com/jacobc/entry/parameterized_unit_tests_with_junit
http://blog.schauderhaft.de/2010/02/07/junit-theories/
http://blogs.oracle.com/jacobc/entry/junit_theories
Theories.class는 Haskell QuickCheck와 유사합니다.
http://en.wikibooks.org/wiki/Haskell/Testing
그러나 QuickCheck는 매개 변수 조합을 자동 생성합니다.
내 이해에서 차이점은 매개 변수화 된 테스트는 다른 입력 세트를 테스트하는 것 (각각 개별적으로 테스트) 일 때 사용된다는 것입니다. 이론은 모든 입력을 다음과 같이 테스트하는 매개 변수화 된 테스트의 특별한 경우입니다. 전체 (모든 매개 변수가 참이어야 함).
답변이 조금 늦었습니다. 그러나 미래의 테스터에게 도움이 될 것입니다.
매개 변수화 된 테스트와 이론
- "@RunWith (Parameterized.class)"VS "@RunWith (Theories.class)"주석이 달린 클래스
- 테스트 입력은 Collection을 반환하는 정적 메서드에서 검색되고 @Parameters로 주석이 추가되고 @DataPoints 또는 @DataPoint로 주석이 달린 정적 필드가 있습니다.
- 입력은 생성자 (필수)로 전달되고 테스트 메서드에서 사용되는 것과 비교하여 입력은 테스트 메서드로 직접 전달됩니다.
- 테스트 메서드는 @Test로 주석 처리되고 인수를 사용하지 않습니다. 대 테스트 메서드는 @Theory로 주석 처리되며 인수를 사용할 수 있습니다.
위의 응답에 추가 : 4 개의 값과 2 개의 테스트 방법이있는 입력
@RunWith (Theories.class)-2 개의 JUnit 테스트를 생성합니다.
@RunWith (Parameterized.class)-8 개 (입력 4 개 x 메서드 2 개) JUnit 테스트를 생성합니다.
'UFO ET IT' 카테고리의 다른 글
장고 모델 인스턴스의 여러 필드를 업데이트하는 방법은 무엇입니까? (0) | 2020.12.10 |
---|---|
R에서 ggplot2를 사용하여 날짜 이해 및 히스토그램 플로팅 (0) | 2020.12.09 |
unique_ptr에는 유형 매개 변수로 deleter가 있지만 shared_ptr에는없는 이유는 무엇입니까? (0) | 2020.12.09 |
Mercurial 저장소를 Git 하위 모듈로 사용하는 방법이 있습니까? (0) | 2020.12.09 |
루팅되지 않은 전화의 경우 USB 케이블없이 무선을 통한 Adb (0) | 2020.12.09 |