CSV 파서를 단위 테스트하려면 어떤 테스트를 사용해야합니까?
나는이 간단한의 CSV 파서 C #에서, 그리고 나는 확실히 내가 모든 일반적인 (그리고 드문) 가장자리의 경우 좋은 단위 테스트 커버리지가되고 싶어요. 잠재적 문제와 경계 사례를 식별하기 위해 어떤 테스트를 사용해야합니까?
CSV 파서를 단위 테스트하려면 어떤 테스트를 사용해야합니까?
나는이 간단한의 CSV 파서 C #에서, 그리고 나는 확실히 내가 모든 일반적인 (그리고 드문) 가장자리의 경우 좋은 단위 테스트 커버리지가되고 싶어요. 잠재적 문제와 경계 사례를 식별하기 위해 어떤 테스트를 사용해야합니까?
답변:
방금 https://github.com/maxogden/csv-spectrum을 찾았습니다 .
CSV 파싱 라이브러리에 대한 산성 테스트로 사용되는 여러 가지 CSV 파일. 확인 목적으로 CSV 버전의 JSON도 있습니다.
이 리포지토리의 목표는 전체 CSV 스펙트럼을 나타내는 테스트 사례를 캡처하는 것입니다.
다음은 생각하고 테스트해야 할 몇 가지 경계 사례입니다.
,foo,
,"foo",
,"foo\nbar"
,"foo,bar"
,"foo""bar"
,,
null ,"",
이어야하며 빈 문자열을 제공해야합니다.CSV 파일에 대한 공식적인 사양은 없습니다. 그러나 대부분의 구현이 따르는 형식을 문서화하는 CSV 파일의 RFC 4180-공통 형식 및 MIME 형식 (특히 섹션 2)을 살펴보십시오.
섹션 2의 목록에서 구체적으로 다음과 같은 테스트 사례를 생성하는 것이 매우 간단 해 보입니다.
각 레코드는 줄 바꿈 (CRLF)으로 구분 된 별도의 줄에 있습니다. 예를 들면 다음과 같습니다.
aaa, bbb, ccc CRLF zzz, yyy, xxx CRLF
파일의 마지막 레코드는 줄 바꿈이 있거나 없을 수 있습니다. 예를 들면 다음과 같습니다.
aaa, bbb, ccc CRLF zzz, yyy, xxx
선택적인 헤더 행이 일반 레코드 행과 동일한 형식으로 파일의 첫 번째 행으로 표시 될 수 있습니다. 이 헤더는 파일의 필드에 해당하는 이름을 포함하고 나머지 파일의 레코드와 동일한 수의 필드를 포함해야합니다. MIME 유형). 예를 들면 다음과 같습니다.
field_name, field_name, field_name CRLF aaa, bbb, ccc CRLF zzz, yyy, xxx CRLF
헤더와 각 레코드에는 쉼표로 구분 된 하나 이상의 필드가있을 수 있습니다. 각 줄은 파일 전체에서 같은 수의 필드를 포함해야합니다. 공백은 필드의 일부로 간주되므로 무시해서는 안됩니다. 레코드의 마지막 필드 뒤에 쉼표가 없어야합니다. 예를 들면 다음과 같습니다.
aaa, bbb, ccc
각 필드는 큰 따옴표로 묶을 수 있습니다. 그러나 Microsoft Excel과 같은 일부 프로그램은 큰 따옴표를 전혀 사용하지 않습니다. 필드를 큰 따옴표로 묶지 않으면 큰 따옴표가 필드 안에 나타나지 않을 수 있습니다. 예를 들면 다음과 같습니다.
"aaa", "bbb", "ccc"CRLF zzz, yyy, xxx
줄 바꿈 (CRLF), 큰 따옴표 및 쉼표가 포함 된 필드는 큰 따옴표로 묶어야합니다. 예를 들면 다음과 같습니다.
"aaa", "b CRLF bb", "ccc"CRLF zzz, yyy, xxx
큰 따옴표를 사용하여 필드를 묶는 경우 다른 큰 따옴표를 앞에 두어 필드 안에 나타나는 큰 따옴표를 이스케이프해야합니다. 예를 들면 다음과 같습니다.
"aaa", "b" "bb", "ccc"
나는 한동안 그것을 위해 노력 해왔다. 좋은 시험을하기에는 틀림없이 이상합니다. 수많은 톤이 있습니다.
이 디렉토리를 확인하고 * .t 파일의 코드를보십시오. :
http://cpansearch.perl.org/src/MAKAMAKA/Text-CSV-1.32/t/
(버전 번호 -1.32는 결국 변경되어 링크가 "죽음"이 될 수 있습니다. 시행 착오를 통해 버전 번호를 직접 늘리거나 상위 디렉토리로 이동하거나 여기를 클릭하십시오
https://metacpan.org/pod/Text::CSV
"찾아보기"를 통해 최신 버전의 소스 코드를 통해 클릭하십시오.)
Text :: CSV_XS는 CSV 파일을 구문 분석하기위한 성숙한 펄 모듈입니다. * .t 파일은 Perl 5로 작성되었으며, 모듈 자체 테스트를위한 많은 테스트 케이스가 포함되어 있으며 모듈 설치시 수행해야합니다.