2013-08-04 3 views
1

다른 언어로 어떻게 테스트합니까?소스 - 소스 컴파일러 용 단위 테스트 작성

내 컴파일러는 소스 언어의 코드를 대상 언어로 변환합니다. 나는 (소스 언어) 입력과 (타겟 언어) 출력이 실행될 때 똑같은 결과를 만들어 내고 싶다.

지금 나는 원본 입력을 실행하고 컴파일러를 통해 실행하고 출력을 실행 한 다음 결과를 문자열 비교합니다. 불만족 스럽습니다 (의미 상 가장 작은 차이로 인해 테스트가 실패하게됩니다. "1.0"은 "1"과 같지 않으므로 테스트가 실패합니다). 더 좋은 방법이 있습니까?

답변

1

이것은 표준 응용 프로그램 (특히 데이터베이스 등의 인터페이스)에서 TDD와 전혀 다른 것은 아닙니다. 구성 요소를 단위 테스트하여 응용 프로그램을 개별적으로 만들 수 있습니다. 위에서 언급 한 테스트에서 코드를 유연하게 만들 수있는 테스트를 만들기 위해 최선의 판단을 내려야하지만 원하는 동작을 철저히 테스트해야합니다.

여전히 결과 코드가 올바르게 출력되는지 테스트하는 것이 좋겠지 만 예상 출력 소스 코드를 작성하는 빌더 객체 뒤에 체크를 격리하면 어설 션됩니다. 예 :

이렇게하면 출력이 변경되는 경우 하나의 작성기 방법으로 변경해야합니다.

+0

팁 주셔서 감사합니다. 어떻게 든 출력을 변형시켜야 할 것입니다. – user1953221

1

언급 한 테스트 패턴은 단위 테스트가 아닙니다. 전체 애플리케이션의 동작을 테스트 중이므로 오히려 블랙 박스 테스트입니다. @grrrrrrrrrrrr은 단위 테스트가 개별 클래스의 개별 메소드를 테스트해야한다고 올바르게 지적했다. 그런 다음 예를 들어 리터럴 "1.0"을 포함하는 작은 코드가 "1.0f"로 올바르게 변형되거나이 정확히 한 가지를 수행하는 (즉 리터럴 또는 무언가를 변환하는) 한 가지 방법으로 허용되는 모든 것을 확인할 수 있습니다.