좋은 단위 테스트를하지 않은 개발자의 주된 변명은 "코드는 단위 테스트 가능한 방식으로 설계되지 않았습니다"입니다. 단위 테스트 할 수없는 디자인 및 코드 유형을 이해하려고합니다.
좋은 단위 테스트를하지 않은 개발자의 주된 변명은 "코드는 단위 테스트 가능한 방식으로 설계되지 않았습니다"입니다. 단위 테스트 할 수없는 디자인 및 코드 유형을 이해하려고합니다.
답변:
몇 가지 요인으로 인해 코드를 단위 테스트하기가 어려울 수 있습니다. 이 경우 리팩토링을 통해 코드를 테스트 할 수 있도록 코드를 개선 할 수 있습니다.
테스트하기 어려운 코드의 예 :
function pGetDp_U(int i, int i2, string sText)
.단위 테스트는 코드의 작은 부분과 관련되므로 명확한 아키텍처가 부족하더라도 코드를 단위 테스트하기가 어렵지 않습니다. 불분명 한 아키텍처는 여전히 통합 및 시스템 테스트에 부정적인 영향을 미칩니다.
코드를 단위 테스트하기 어렵게 만드는 많은 것들이 있습니다. 우연히도 많은 것들이 코드를 유지하기 어렵게 만듭니다.
사람들이 단위 테스트를 원하지 않는 일반적인 코드 예제 :
모의 프레임 워크를 사용하여 이러한 모든 예제를 단위 테스트 할 수 있습니다. 내부 종속성에 대한 모의 대체물을 설정하는 것만으로 작동합니다.
단위 테스트를 할 수없는 것들 :
단위 테스트를 작성하기가 더 어려운 몇 가지 영역이 있습니다. 그러나 이것이 유용한 테크닉을 단순히 테스팅에 약간의 복잡성을 추가 할 수 있기 때문에 할인해야한다는 것을 의미하지는 않습니다. 어떤 코딩과 마찬가지로 당신이 이익이 비용을 outway 여부를 결정하기 위해 자신의 분석을 수행해야하며, 맹목적으로 그물에 어떤 어떤 임의의 사람이 게시물을 수락하지.
당신이 무엇을하는지 알지 못한다면 이러한 나선의 대부분을 통제 할 수없는 비용. 불행히도 많은 사람들은 복잡한 테스트와 같은 것을 완화하기 위해 이러한 기술을 사용하는 방법을 종종 모릅니다.
테스트 할 수없는 코드는 없습니다. 그러나 실제로 테스트하기 어려운 코드의 몇 가지 예가 있습니다 (노력할 가치가없는 시점까지).
하드웨어 상호 작용-코드가 하드웨어를 직접 조작하는 경우 (예 : 물리적 장치를 이동하기 위해 레지스터에 쓰는 경우) 단위 테스트가 너무 어렵거나 비쌀 수 있습니다. 테스트에 실제 하드웨어를 사용하는 경우 테스트 하네스 (아직 더 많은 장비)에 대한 적절한 피드백을 얻는 데 많은 비용이 소요될 수 있습니다. 일부 사례.
클록 상호 작용-시스템 클록 기능을 거의 사소하게 조롱하는 것이 거의 항상 가능하기 때문에 일반적으로 더 쉽습니다. 그러나 그렇게 할 수 없으면 이러한 테스트를 관리 할 수 없게됩니다. 실시간을 기반으로하는 테스트는 실행하는 데 시간이 오래 걸리는 경향이 있으며 제 경험상 시스템로드로 인해 예상보다 시간이 오래 걸리기 때문에 취하기 쉽습니다. 팬텀 테스트 실패를 유발합니다.