2013-08-14 3 views
0

this article 및 기타 테스트에 대한 내용을 읽었으며 실제 .NET 프로젝트에서 구현이 아닌 이론을 이해할 수 있다고 생각합니다..NET 프로젝트에서 단위 테스트 및 수락 테스트 구현

내 프로젝트는 여러 (기능적인) 어셈블리로 분해되어 있으며 테스트를 진행하고 싶습니다. 내 메서드 및 속성 대부분은 개인 또는 내부이므로 테스트 어셈블리에서 액세스 할 수 없습니다. 공용 어셈블리 만 테스트합니다 (내 어셈블리의 모든 경로를 테스트하기 위해).

데이터베이스 또는 Microsoft HPC와 같은 다른 서비스를 사용하고 있기 때문에 이러한 테스트가 단위 테스트가 아니기 때문에 제가하고있는 테스트에 대해 궁금합니다. 맞습니까? 필자가 생각하기에 단위 테스트를하고 싶다면 논란의 여지가있는 사적 방법과 속성을 테스트해야합니다.

저는 Nunit을 사용하고 있으며 통합 테스트 및 단위 테스트를 프레임 워크에 넣을 수 있는지 궁금합니다.

체크 아웃 할 수있는 단위 테스트 및 수락 테스트가있는 .NET 오픈 소스 프로젝트가 있습니까?

감사

답변

1

많은 질문은 ...

공개/비공개 : 일반적으로, 당신은 단지 공용 인터페이스를 통해 테스트 할. private 메소드를 테스트하고 싶다면 클래스를 두 개로 나누고 private 메소드를 공개 (또는 내부)하게해야한다는 신호일 것입니다. SRP. 내부 메서드를 테스트하려면 check this answer.

테스트를 작성할 때 시스템의 동작을 테스트하려고합니다. 행동으로는 (비록 다른 흥미로운 이해 관계자가있을 수 있지만) 최종 사용자로부터 시스템이 어떻게 작동하는지 생각하십시오. 이렇게하면 사적인 방법을 테스트하려는 문제가 거의 발생하지 않습니다.

단위 테스트 및이 논의되는 통합 테스트 및, 내 의견이 아니라 매우 중요한 논쟁의 차이. 더 중요한 것은 스스로에게 질문하는 것입니다. 테스트의 목적은 무엇입니까?

(예 : 외부 시스템과의 통합과 달리) 시스템을 테스트하려는 경우 테스트는 반복적이어야하며 소유하지 않은 것은 포함하지 않아야합니다. 반복적으로 말하면, 테스트가 실패하면 일단 실패해야합니다 (임의성 없음). 빨리 나는 모든 테스트를 실행하는 데 대한 피드백을 기다릴 필요가 없다는 것을 의미합니다. 자신이 소유하고있는 것으로는 조직 외부의 변경으로 인해 테스트가 실패하지 않아야 함을 의미합니다. 이 작업을 수행 할 수 있고 데이터베이스 및/또는 Microsoft HPC에 대한 호출을 계속 포함 할 수 있다면 그 이유는 알 수 없습니다.

NUnit에서 다른 테스트 유형을 구분하려면 categories을 사용할 수 있습니다. 대부분의 도구를 사용하면 이러한 도구를 기반으로 하위 집합을 실행할 수 있습니다.

0

죄송합니다. Torbjörns 답변에 개입해야합니다.

단위 테스트와 통합 테스트 간에는 큰 차이가 있습니다. 단, 카테고리만으로는 처리 할 수 ​​없습니다. 통합 테스트에 필요한 모든 참조 또는 종속성에 대해 생각해보십시오. 빌드 머신에서 통합 테스트를 실행 한 적이있는 사람이 이야기를 들려 줄 수 있습니다.

규칙 : 단위 테스트 및 통합 테스트를 절대로 혼합하지 마십시오. NUnit과 같은 테스트 러너를 다시 사용할 수 있지만 테스트 프로젝트를 분할해야합니다.

피씨 : TDD 여정에 오신 것을 환영합니다!