나는 각 항목 값을 하나 개의 테스트를 작성해야하거나 내가 entryValues 변수 값을 변경해야하고, t 전화 그는 .assert() 메소드 (가능한 모든 값 범위에 대해 수행)?
하나의 코드 경로가있는 경우 일반적으로 가능한 모든 입력을 테스트하지 않습니다. 일반적으로 테스트하기를 원하는 것은 "흥미로운"인풋으로, 얻을 수있는 데이터의 좋은 예가됩니다.
나는 내가 MAX_NEGATIVE_INT, -1, 0, 1을 사용할 수있는 모든 가능한 값에 대한 테스트를 쓸 수 없습니다
define add_one(num) {
return num+1;
}
기능이있는 경우 예를 들어
, MAX_POSITIVE_INT 내 테스트 세트로 그들은 때문에 내가 얻을지도 모르는 재미있는 가치의 좋은 대표자.
모든 코드 경로마다 하나 이상의 입력이 있어야합니다. 모든 값이 고유 한 코드 경로에 해당하는 함수가있는 경우 가능한 전체 값 범위에 대한 테스트를 작성하는 것이 좋습니다. 그리고 이것의 예는 명령 파서 일 것입니다.
명확성을 위해 나는 디스패치 테이블보다는 엘프를 사용했습니다. 나는 이것이 고유 한 각각의 고유 한 값이 다른 행동을 가지므로 가능한 모든 값을 테스트해야한다는 것을 분명히합니다.
데이터 구동 (매개 변수화) 테스트는 이론적으로는 좋지만 IMHO는 테스트 사례를 이해하고 유지 관리하기가 어렵게 만듭니다. 각각의 사례에 대해 설명적인 이름으로 별도의 테스트를하면 유스 케이스를 더 잘 이해할 수 있습니다. 충분히 의미가 있지만 중복 된 코드를 의미하지만 리팩토링은 적절한 수준으로 최소화 할 수 있습니다. –
@Peter - 매개 변수화 된 테스트는 최소한 NUnit에서 가독성을 위해 Description 및 Name 속성을 사용합니다. 단위 테스트의 모든 단계가 일정하고 입력 - 출력 만 변경 될 때 데이터 기반 테스트를 사용합니다. – Gishu