2012-01-04 3 views
0

私は現在ゲームを書いています。私はそれをテストすることで少し問題があります。テストのために特定のステージに到達するために複数のステップを含むアプリケーションをどのようにテストしますか?

A簡単な例では、このようなものが含まれます。

  1. 皆が
  2. みんなの準備ができて押したゲームに参加します。一度みんなが準備をした。ゲームを開始する狂気
  3. 何かが

を起こる、私はしかし、私は3をテストするために実現し、私はその後、次の項目に従ってテスト1、次に2を呼び出す必要があります任意のトラブル1と2のテストを持っていませんゲームフローには、1,2、および3のテストも含まれます。

これはどのようなテストですか?私はこれが単体テストではないことを確かに知っています。それは統合テストのように少し聞こえる。

このようなアプリケーションをテストする正しい方法は何ですか?

PS私はnodejsでこのアプリを書いています。私がこのようなことをできるようにするための良い枠組みは何でしょうか? (私は現在nodeunitを使っていますが、実際に私にエラーを投げずに以前のテストケースを呼び出すことはできません)。

答えて

1

最初のユニットをテストします。単体テストの難しさは、責任を分けることを指示しています。あなたの状態を記述する。状態パターンを使用して実装します。すべての状態で使用される場合と使用されない場合がある、より良いコードと機能(たとえば、誰もが準備完了状態になっています...ゲーム状態が「開始済み」)を完全に独立してテストします。だから素晴らしい機能ブロックで終わる。

今、あなたの「状態エンジン」と状態がテストされたら、それらを結線したいと思います。これは統合テストです(あなたがアプリケーション全体をテストしていないと仮定します)。統合テストの目的は、すべての機能ではなく、サブシステムの配線をテストすることです。すべてのアプリケーションではありません。

+0

私は間違いなく私が望むものをテストしないので、統合テストをしたくないということを明確にしています。私はインテグレーションサブシステムではありません - 私は単にテスト内でテストケースを呼び出して、テストのために正しい状態になるようにしています。 – disappearedng

+0

統合テストを片側に置く。状態パターンを使用している場合は、テスト内でテストケースを呼び出す必要はありません。私はあなたの呼び出しテストがテスト内で状態にコード化するために歩くと思います。これを維持するのが難しくなると思います。状態パターンでは、各状態はそれ自身のクラスです。あなたのケースでは、あなたは少なくとも "参加する"、 "開始する"、 "何かクレイジーが起こる"の3つの状態があります。あなたはユニットテストをすることができます "開始"遷移に "何かクレイジーが起こる"とあなたはユニットクレイジーなものをテストすることができます。 –

関連する問題