※ ChatGPTを利用し、要約された質問です(原文:ネストしたenumへのリフレクションによるアクセス)
ネストしたenumへのリフレクションによるアクセス
このQ&Aのポイント
GameクラスのネストしたenumであるGameStateにJUnitのテストコードからアクセスする方法について質問です。
GameStateがprivateで宣言されているため、リフレクションを使用してアクセスする方法を知りたいです。
テストコードからGameStateにアクセスする方法を教えてください。
ネストしたenumへのリフレクションによるアクセス
public class Game {
// ゲームの状態
private enum GameState{
TITLE,
PLAYING,
GAMEOVER,
}
private GameState state;
}
上記のクラスに対して、JUnitのテストコードから、
メンバ変数のstateの値とenum定数 GameState.TITLEとの比較がしたいと思っています。
イメージとしては、
if(state == GameState.TITLE){
.....
}
のような形です。
GameStateがprivateで宣言されているため、テストコードからはリフレクションを使用すればアクセスできるのではないかと思っているのですが、ネストしたクラスにどのようにアクセスすればよいのかがわかりません。
テストコードにて、
Game game;
Class<? extends Game> c = game.getClass();
// GameState取得
Field e = c.getDeclaredField("GameState");
とすると、実行時にGameStateがないと言われてテストに失敗してしまします。
テストコードからGameStateにアクセスするにはどのようにすればよいのでしょうか?
お礼
こちらのコードを参考にして、無事テストに成功しました。 大変勉強になりました。ありがとうございます。