2012-07-28 3 views
1

Ruby on Rails로 위험과 유사한 게임을 개발하고 문자 사이에 영역을 파견하고 (임의로) 문자 단위를 파견하는 절차를 개발해야합니다 그들의 영토로."복잡한"작업 테스트 : 위험한 보드 게임 배포

게임에는 5 개의 문자가있는 42 개의 영토가 있습니다. 3 문자는 8 영토를 받고 2 문자는 9 영토를받습니다. 각 캐릭터는 할당 된 지역으로 파견하기 위해 25 유닛 (9 개 영토를 가진 유닛의 경우 27 개)의 풀을 가지고 있습니다. 각 영토는 최소한 1 유닛으로 끝나야합니다.

내 모델은 다음과 같습니다. 필요한 경우 변경할 수 있습니다.

  • 사용자;
  • 게임;
  • 면적;
  • 캐릭터, 사용자를 게임에 바인딩하고, 나머지 유닛을 배치하여 배치합니다.
  • 테리토리, 해당 지역의 유닛 수를 보유하고있는 캐릭터를 영역에 연결하십시오.

여기 내 의견이 있습니다.

  • 성능이 떨어지는 경우에도 두 작업 (지역 발송 및 단위 발송)을 구분해야합니다.
  • 더 쉽게 테스트하려면 출력 상태가 동일한 입력과 동일해야합니다. 임의의 부분은 외부에서 가져와야합니다.

그런 시나리오에 대해 어떤 어설 션을 쓰겠습니까? 기본 Rails 3 테스트 스택 : Test :: Unit 및 Fixtures를 사용합니다.

The code is available on GiitHub.

감사합니다. 당신은 매우 간단 보일 필요

+0

위험은 없지만 궁금합니다 어느 정도의 초기 무작위 배치가 재귀 적 방법으로 코딩 될 수 있는지. 가능한 경우 테스트가 쉽습니다. 마지막 위치가 설정되기 전에 단계를 나타내는 고정구를 사용하여 (N-1) 위치 지정 방법의 결과가 제한된 세트에 속하게됩니다. 여기에 스펙이 있습니다. – apneadiving

답변

1

어설 :

  • 게임은 42 개 지역 (5 개) 문자

  • 있습니다.

  • 3 문자는 8 개 영토를 받고 2 문자는 9 개 영토를받습니다.

  • 각 문자는 25 개 단위

등의 풀 ...

내 모델은 다음과 같다 있습니다. 필요한 경우 변경할 수 있습니다.

  • 사용자;
  • 게임;
  • 면적;
  • 캐릭터, 사용자를 게임에 바인딩하고, 나머지 유닛을 배치하여 배치합니다.
  • 테리토리, 해당 지역의 유닛 수를 보유하고있는 캐릭터를 영역에 연결하십시오.

여기 내 의견이 있습니다.

  • 성능이 떨어지는 경우에도 두 작업 (지역 발송 및 단위 발송)을 구분해야합니다.
  • 더 쉽게 테스트하려면 출력 상태가 동일한 입력과 동일해야합니다. 임의의 부분은 외부에서 가져와야합니다. 보조 노트로

, 난 당신이 여기 선행 디자인에서 충분히 멀리보다 더 갔어요 생각합니다. TDD는 코드의 디자인이 출현하고 진화하도록되어 있기 때문에 처음에는 이러한 사전 설정된 규칙을 고수 할 수는 있지만 테스트를 작성할 때 변경하거나 두드리는 것을 두려워해서는 안됩니다 .

구현을 테스트하는 가장 좋은 방법은 첫 번째 테스트에서 다른 테스트로 진행하는 것입니다. 그리고 가장 좋은 디자인이 무엇인지 점차적으로 발견하고 처음부터 완벽한 모델을 만들지 마십시오.

-1

어떤 종류의 PlayerSelector가 유용하지 않습니까?

아마도 플레이어 selectPlayer() 또는 플레이어 ID입니다. 그런 다음 CyclicSelector 스터브 (CyclicSelector Stub)를 사용하여 선택을 결정할 수 있습니다. 첫 번째로 선택한 국가는 player1로, 두 번째로 2, 3,1,2,3 등이됩니다.