2009-06-02 2 views
3

Rhino Mock을 사용하여 TDD를 Model-View-Presenter 패턴과 함께 사용하는 데 유용한 정보가있는 웹 사이트에 대한 좋은 예나 사례를 감사하십시오. 내가 무엇을 찾고Rhino 모의를 사용하여 TDD를 모델 뷰 발표자와 함께 사용하는 좋은 예/참고 자료

은 조롱하기 위해 무엇 다음 사항

  • (보기 및 발표자)
  • UI 동작을 조롱하는 방법
  • 새로운 AAA 구문에 대한입니까? 예 : 보기에 "firstName"및 "lastName"을 입력하면 "제출"버튼이 활성화되고 그렇지 않은 경우 비활성화됩니다. 이것은 단지 간단한 예일뿐입니다.
  • 유용한 정보

방향이 모든 입력을 크게 받고있다.

미리 감사드립니다.

답변

4

답변이 없으므로 지금까지 배운 내용에 최선을 다할 것입니다.

첫 번째 질문; 모의 할 대상 - 일반적으로 테스트하지 않은 모든 것을 조롱합니다. 따라서 ViewModel을 테스트 중이라면 ViewModel을 변경하는보기 코드를 조롱하고 ViewModel을 채우거나 지속하는 모델 코드를 조롱합니다.

두 번째 질문; AAA 구문 - AAA 구문은 테스트 메소드에 다음 유형의 주석을 추가하여 쉽게 유지할 수 있습니다.

[Test] 
public void whenUserFillsInFirstAndLastName_ThenUserCanSubmit() 
{ 
    // Arrange - code used to set-up what you are testing. 
    this.loadViewModelWithInitalContext(viewModel); // This is a helper that loads the viewmodel 

    // Act - code to fullfil the 'when' part in the test. 
    this.viewModel.FirstName = "test"; 
    this.viewModel.LastName = "me"; 

    // Assert - code to check state of object being tested. (here I am testing a property that I bind to the enabled state of a submit type button) 
    Assert.IsTrue(this.viewModel.UserCanSubmit); 
} 

세 번째 질문, 모의 UI의 동작은, - 일반적으로 당신은 (테스트 뷰 모델의 경우) 시험 법 부분에 넣어.

마지막 질문, 우수 사례, 내 경험이라고합니다.

  • 한 번에 한 가지만 주장하면 테스트가 실패 하나 실패하고, 무엇이 잘못되었는지 생각할 때 많은 시간을 절약 할 수 있습니다. 단언 할 때마다 하나의 테스트 방법을 사용하는 것으로 갈 수도 있지만 일을 관리 할 수 ​​있도록 AAA 구문의 다른 구현이 필요하기 때문에이를 수행하는 방법에 대한 새로운 질문을하십시오.
  • 코드를 조롱하기가 쉽기 때문에 종속성 삽입을 사용하십시오.
  • 가능한 한 가볍게 테스트하십시오. 테스트를 빨리 수행 할 데이터베이스 나 디스크로 이동하지 마십시오. 개발자가 가능한 한 자주 테스트를 수행하십시오. 테스트를 진행하는 데 5 분이 걸리는 경우 기다리는 것이 아플 수 있습니다. 10 초 가량 걸리면 훨씬 더 자주 할 수 있습니다.
  • 마지막으로,하지만 가장 중요한 점은 팀의 모든 사람이 체크 인 할 때마다 모든 단위 테스트를 실행해야합니다. 이렇게하면 테스트를 최신으로 유지하고 코드 기반을 훨씬 안정적으로 유지할 수 있습니다. CruiseControl.net과 같은 contiues 통합 플랫폼을 사용하여 가능한 한 자주 별도의 서버를 구축하십시오. 실마리가 있다면, 누군가/물건이 빌드를 망가 뜨린 경우 최대한 빨리 알기를 원합니다.

내 추천 참조 문헌; '좋아하는 검색 엔진'을 사용하여 원하는 것을 검색하거나 여기에 테스트의 예를 게시하고 의견을 얻으십시오. 그러면 자신이하는 일을 개선하는 데 도움이됩니다.

1

필 하크는 이것에 꽤 좋은 blog post을 가지고 있습니다.소스 코드를 다운로드하고 테스트를 한 번 보시면 주석을 달았습니다.

+0

AAA 또는 RhinoMocks로 단위 테스트를 작성하는 데이 참조를 사용하지 않는 것이 좋습니다. 이 코드는 테스트를 위해 AAA 구문을 사용하지 않으며, 테스트는 AAA 구문에 비해 엉망인 Record/Reply를 사용하여 작성됩니다. – Thies