답변이 없으므로 지금까지 배운 내용에 최선을 다할 것입니다.
첫 번째 질문; 모의 할 대상 - 일반적으로 테스트하지 않은 모든 것을 조롱합니다. 따라서 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 통합 플랫폼을 사용하여 가능한 한 자주 별도의 서버를 구축하십시오. 실마리가 있다면, 누군가/물건이 빌드를 망가 뜨린 경우 최대한 빨리 알기를 원합니다.
내 추천 참조 문헌; '좋아하는 검색 엔진'을 사용하여 원하는 것을 검색하거나 여기에 테스트의 예를 게시하고 의견을 얻으십시오. 그러면 자신이하는 일을 개선하는 데 도움이됩니다.
AAA 또는 RhinoMocks로 단위 테스트를 작성하는 데이 참조를 사용하지 않는 것이 좋습니다. 이 코드는 테스트를 위해 AAA 구문을 사용하지 않으며, 테스트는 AAA 구문에 비해 엉망인 Record/Reply를 사용하여 작성됩니다. – Thies