プログラム

slim3でテストのデータが残ってしまった

最近slim3をやっています。

そこで、詰まったのでメモ。


JUnitで単体テストをやるのですが、なんかテストうまくいかないな、とテストをデバッグで動かして途中で止めたら、データが残ってしまいました。普通はテストが終わるとデータが消えてくれます。

テストの最初に「データが空であること」というのを入れていたので、すべてのテストが通らなくなってしまった・・。


解決策。

まず、ローカル環境の普通の実行のデータストアは、

「war/WEB-INF/appengine-generated/local_db.bin」

に入っています。

普通の実行の際のデータを消したい場合は、そのlocal_db.binを消して作り直せばデータ消えます。

自分の場合は、■ボタンでサーバーをとめてから、また実行させてます。

これはホットリローディング効かないのかな?


テスト実行の場合

「test/WEB-INF/appengine-generated/local_db.bin」

にはいっているとあったので、それを削除・再作成。

したのだが、やはりテストが通らない。


うーん、と悩んで、

「build/test-classes/WEB-INF/appengine-generated/local_db.bin」

というのがあったのでこれを削除した。

すると、データが消えて、テストが通った!やったー!

どうやら、このファイルにキャッシュ?かなんかされるみたいな。

このファイルは勝手に作成されるみたいで、削除だけでよかった。


メモ終わり。




XNAテトリスで悩んでること

今、XNA(マイクロソフト製のゲームフレームワーク)でテトリスを作っている。
で、テトリミノの表現と関連処理の実装のために次のようなクラスを作っている。

Minoクラス
・IDプロパティ(抽象)
・ミノを構成するブロック情報
・「ミノを構成するブロック情報」を生成するメソッド(抽象)
・位置情報
・方向番号
・落下とか回転とか移動の処理
・コンストラクタ
↑の「ミノを構成するブロック情報」を生成するメソッドを呼んで、
それをミノを構成するブロック情報に代入する

↓(継承)

Mino0クラス~Mino6クラス(棒ミノや四角ミノの種類ごとに1つ)

・IDプロパティの実装
棒ミノを表すmino0クラスなら、return 0;を返す 等

・「ミノを構成するブロック情報」を生成するメソッドの実装
棒ミノを表すmino0クラスなら、
方向0・・・ (-1,0 0,0 1,0 2,0)
方向1・・・ (0,-1 0,0 0,1 0,2)
方向2・・・ (-2,0 -1,0 0,0 1,0)
方向3・・・ (0,-2 0,-1 0,0 0,1)
といったようなデータを返す


といったような感じです。(自分だけ分かればいいやー(テキトー
落下ミノとしてmino0~mino6をランダムに生成して、それを落下させています。

で、ここでミノが落下する地点を半透明で表示する「落下ガイド」を実装したくなったので、
すでにあるこのminoクラスの落下処理を利用したいと思いました。

落下しているminoクラスをコピーして落下ガイド用minoクラスを作ればいいのかな?
と思ったんだけど、それでいいのか?と悩んでるところ。

なぜか。
「ミノを構成するブロック情報」を回転や移動させるたびにコピーする必要がある。
参照だけコピーしとけば軽いと思うけど、それならそもそも落下するミノを生成する時点での
「ミノを構成するブロック情報」生成処理もどっかから参照してくればいいんじゃね?
とか設計ダメジャンと考えてるなう。

(そもそもコンストラクタでブロック情報生成のメソッド呼んでるから、
 今のままじゃコピーといっても毎回生成しちゃうんじゃ・・)

そんな今日この頃。
分かりやすく書いてなくてすいません。頭の中がそのまま吐き出されてます。

とりあえず悩んでることだけでもまとめといたほうがいいと思って。
たぶん、これからの記事もそうなっていくかと・・。
記事検索
livedoor プロフィール
QRコード
QRコード

トップに戻る