UFO ET IT

JUnit 이론과 매개 변수화 된 테스트의 차이점

ufoet 2020. 12. 9. 20:58
반응형

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 테스트를 생성합니다.

참고 URL : https://stackoverflow.com/questions/5727616/difference-between-junit-theories-and-parameterized-tests

반응형