포인트 2로 "솔루션 별 bin 폴더"를 의미하는 경우 - 귀하의 요점을 볼 수 있습니다. 개인적으로, 각 테스트 프로젝트에 참조를 추가하기 만하면됩니다. 반면에, 당신이 정말로 "(1b)"당신의 코드와 같은 어셈블리에 테스트를하지 않는다면 나는 그와 진심으로 동의하고 당신과 의견을 달리한다. 코드 명확성과 조직을 향상시키기 위해 테스트는 프로덕션 코드와 구별되어야합니다. 테스트 클래스를 별도로 유지하면 다음 프로그래머가 더 쉽게 이해할 수 있습니다. 테스트에서 내부에 액세스해야하는 경우 - 내부 메서드가 어셈블리에 "public"이므로 Assembly.cs 파일에서 InternalsVisibleTo 구문을 사용할 수 있습니다.
저는 일반적으로 코드의 공용 인터페이스 만 테스트하는 것으로 충분하다고 권장합니다. TDD을 올바르게 사용하면 코드의 개인 메소드가 이전 공용 코드의 리팩토링이 될 것이고 공용 메소드를 통해 충분한 테스트 커버리지를 갖게 될 것입니다. 물론 이것은 법이 아닌 지침이므로 개인적인 방법을 테스트하고 싶을 수도 있습니다. 이 경우 접근자를 만들고 리플렉션을 사용하여 private 메서드를 호출 할 수 있습니다.
단위 테스트와 코드 범위를 나란히 사용하는 것이 좋습니다. 코드 커버리지는 더 많은 테스트가 필요할 때를 식별하는 유용한 경험적 방법 일 수 있습니다. 커버리지가 부족하면 더 많은 테스트가 필요한 곳을 나타내는 지침으로 사용되어야합니다. 이것은 당신이 100 % 적용 범위를 필요로한다고 말하는 것이 아닙니다. - 일부 코드는 단위 테스트 (예 : 자동 속성)를 보증 할만큼 충분히 간단 할 수도 있고 기존 테스트에 의해 영향을받지 않을 수도 있습니다.
기사와 관련하여 몇 가지 문제점이있었습니다. 아마도 가장 큰 것은 단위 테스트를 위해 데이터베이스에서 벗어난 추상화가 없다는 것입니다. 아마도 DB에 대해 수행해야하는 통합 테스트가있을 수 있습니다. 그렇지 않으면 자신의 정확성을 확신 할 수없는 경우 트리거 또는 제약 기능을 테스트 할 때가 있습니다. 그렇지만 일반적으로 데이터 액세스를 인터페이스로 구현해야한다고 생각합니다. 그런 다음 실제로 단위 테스트에 실제 구현을 조롱하여 실제로 데이터베이스에 연결할 필요가 없도록하십시오. 나는 나의 시험이 더 빨리 달리는 것을 발견한다. 그래서 나는 이것을 할 때 더 자주 시험한다. "가짜"데이터베이스 인터페이스를 구축하는 데 약간의 시간이 걸릴 수 있지만 데이터 액세스에 동일한 디자인 패턴을 고수하는 한 재사용 할 수 있습니다.
마지막으로 nUnit을 사용하든 MSTest를 사용하든 매우 유용한 플러그인 인 TestDriven.Net과 함께 nUnit을 사용하는 것이 좋습니다. 오른쪽 클릭 컨텍스트 메뉴를 사용하여 테스트를 실행하거나 디버그하는 것이 매우 편리합니다.
해당 링크는 404입니다. http://misko.hevery.com/code-reviewers-guide/를 의미합니까? – Andrew
예, 링크가 수정되었습니다. –