2013-06-27 4 views
0

Q1 : 단위 테스트를 실행하는 것이 가장 이상적입니까? 앱을 디버깅 할 때마다 실행해야합니까? 그들은 svn에 변경 사항을 저지하기 전에 그들이 실행해야합니까? 나는 애플 리케이션이 단 두 개의 단위 테스트를 가지고 있다면 애플 리케이션이 디버깅 할 때마다 실행되어야한다고 생각한다. 그러나 이것이 이상적인지 아닌지를 판단하기 위해 수백 시간의 단위 테스트를 완료하는 데 약간의 시간이 걸릴 수 있습니다. 제 생각에 커밋하거나 배포하기 전에 실행하는 것이 좋습니다.단위 테스트를 수행해야하는시기와 이유는 무엇입니까?

Q2 : 내 앱에서 서비스 레이어가있는 저장소 패턴을 사용하고 있습니다. 서비스가 저장소를 호출하고 저장소가 db를 쿼리 할 때 서비스를 테스트하는 방법에 대한 연구를 수행했습니다. 따라서 통합 테스트가 아닌 진정한 단위 테스트가 되려면 데이터베이스를 건드리지 않고 테스트 할 방법을 찾아야합니다. 사람들이 저장소를 조롱하기 위해 Moq을 사용하고있는 것으로 나타났습니다. 여기에 제가 문제가있는 곳이 있습니다. 저장소를 조롱하면 방법이 작동하는 방식이 바뀌고 무의미한 단위 테스트처럼 보입니다. 실제로는 코드를 테스트하지 않는 것 같습니다. 이것에 대해 내가 틀린가? 어떤 조언을 주셔서 감사합니다.

답변

1

촬영 해 보겠습니다.

A1 : 기존 코드를 리팩터링 할 때, 해당 단위 테스트 (전부는 아님)를 실행하고 변경 사항으로 인해 문제가 없는지 확인해야합니다. 새로운 기능을 사용하려면 TDD를 사용하여 새로운 단위 테스트를 병렬로 구현해야합니다. 직접 모든 단위 테스트를 수행해서는 안되지만 지속적인 통합을 사용하거나 의존해야합니다.

A2 : 나는 당신과 같은 의견을 가지고있었습니다. 하지만 이제는 서비스 계층에 대한 단위 테스트가 필요하다고 확신합니다. 단위 테스트를 통해이 모든 것을 다룰 수 있어야합니다. 이 시점에서 서비스 핵심은 리포지토리에 대한 위임이지만 서비스는 발전합니다. 이 서비스는 매개 변수 유효성 검사, 권한 부여, 로깅, 트랜잭션, 배치 지원 API 등의 책임을 맡습니다. 그런 다음 데이터 액세스뿐 아니라 더 많은 것들이 있습니다. 내가 당신 자리에 있다면 나는 저장소를 조롱하여 서비스의 단위 테스트를 할 것입니다. 때때로 서비스는 저장소 맨 위에 편리한 메소드를 제공합니다.

당신에게 도움이 될 수 있기를 바랍니다.

1

a1. 코드를 변경할 때 단위 테스트를 자주 실행할수록 주장한 행동이 영향을 받았는지에 대한 피드백을 신속하게 얻을 수 있으므로 더 자주 더 좋습니다! 단위 테스트는 매우 빨라야하고 수백 개가 실행되어야하며 몇 분이 걸릴 것입니다. 그러나 infinitest을 조사해 볼 가치가 있습니다 (자바로 작업하는 경우 .net 등의 대안이 존재할 것으로 기대합니다). eclipse는 프로젝트를 빌드 할 때 자동으로 단위 테스트를 실행합니다. 마지막으로 실행 된 이후 영향을받은 테스트 만 실행하면됩니다. 테스트를 업데이트하거나 일부 단위 테스트에서 다루는 "응용 프로그램"코드를 업데이트하면 특정 테스트가 실행됩니다.

A2. 단위 테스트는 서비스 + 다오 스를 여러 번 호출하는 다양한 시나리오를 다루며 "실제"서비스를 사용하면 각 호출의 결과를 보장하기 어렵게 만들며 (각 테스트의 데이터를 설정하는 것도 힘들 수 있습니다), 결과가 느려질 수 있습니다. 일반적으로 단위 테스트를 통해 이러한 서비스를 모의하고 통합 테스트를 통해 독립적으로 테스트하는 것이 좋습니다.

관련 문제