나는 사람들에게 물어보고 싶었습니다.이 경우 haskell, scala, ocaml, nemerle, f # 또는 haXe로 작성된 정적 형식의 기능 코드를 단위 테스트하는 것이 합리적입니다 (마지막에 관심이있는 것이지만 원했습니다. 더 큰 공동체에 대한 지식을 활용하십시오).
나는 이것을 이해하기 때문에 이것을 묻습니다.
단위 테스트의 한 측면은 사양을 실행 가능한 형식으로 유지하는 것입니다. 그러나 공식화 된 스펙을 언어 시맨틱에 직접 맵핑하는 선언적 스타일을 사용할 때 실제로 스펙을 별도의 방식으로 실행 가능한 형태로 표현하는 것이 가능 합니까?
단위 테스트의보다 분명한 측면은 정적 분석을 통해 확인할 수없는 오류를 추적하는 것입니다. 유형 안전 기능 코드는 정적 분석기가 이해하는 것과 매우 근접한 코드를 작성하는 데 유용한 도구이므로 많은 안전을 정적 분석으로 전환 할 수 있습니다. 그러나 코드에서 (좌표)
x
대신 사용 하는 것과 같은 간단한 실수는y
다루지 못합니다. 테스트 코드를 작성하는 동안 OTOH와 같은 실수가 발생할 수도 있으므로 노력할만한 가치가 있는지 잘 모르겠습니다.단위 테스트에는 중복성이 도입되므로 요구 사항이 변경 될 때 요구 사항을 구현하는 코드와이 코드를 다루는 테스트를 모두 변경해야합니다. 물론이 오버 헤드는 일정하기 때문에 실제로 중요하지 않다고 주장 할 수 있습니다. 실제로 Ruby와 같은 언어에서는 실제로 이점과 비교되지 않지만 정적 형식의 함수형 프로그래밍이 많은지면 단위 테스트를 대상으로하는 방법을 고려할 때 페널티없이 간단하게 오버 헤드를 줄일 수있는 것처럼 느껴집니다.
이것으로부터 나는이 프로그래밍 스타일에서 단위 테스트가 다소 쓸모 없다고 추론 할 것이다. 물론 그러한 주장은 종교적 전쟁으로 만 이어질 수 있으므로 간단한 질문으로 요약하겠습니다.
이러한 프로그래밍 스타일을 사용할 때 단위 테스트를 어느 정도까지 사용하고 왜 (코드에 대해 어떤 품질을 얻으려고합니까?) 또는 다른 방법으로 : 정적 분석기가 적용 하는 정적 유형의 기능 코드 단위를 검증 할 수있는 기준이 있으므로 단위 테스트 적용 범위가 필요하지 않습니까?