2

我一直试图让 Robotium 测试仪在 libGDX 中为 Android 项目工作,但遇到了一些问题。首先,我想测试我的游戏按钮(即 imageButtons),但为此我需要 Android 中的 imageButton 索引。

我怎么能得到那个?

我的按钮在主项目中:

  ImageButtonStyle style = new ImageButtonStyle();
  style.imageUp = buttonsImagesUp;
  style.imageDown = buttonsImagesDown;
  ImageButton newgameButton = new ImageButton(style);
  newgameButton.setPosition(425,330);

这是我想在 JUnit 中测试的按钮。

我的 JUnit 代码:

public class ButtonTest extends ActivityInstrumentationTestCase2<MainActivity> {

   private Solo solo;

   @SuppressWarnings("deprecation")
   public ButtonTest() {
      super("com.me.myGame", MainActivity.class);
   }

   protected void setUp() throws Exception {
      super.setUp();
      solo = new Solo(getInstrumentation(), getActivity());
   }

   public void testMenu(){
      solo.assertCurrentActivity("First menu selected",  MainActivity.class);
      solo.clickOnImageButton(index); //need index
   }
}

我的游戏是这样设置的:首先是处理资源并将第一个屏幕设置为主菜单的主游戏类:

  @Override
   public void create() {
      playSound = userPref.getBoolean("playSounds");
       setScreen(mainMenuScreen);              
   }

在此之后,它转到 MainMenuScreen.js,这就是我想用 JUnit 测试的按钮

4

1 回答 1

2

Robotium 的 an 概念与ImageButtonLibgdx 非常非常不同。Robotium 需要一个图像按钮,该按钮被定义为标准 Android UI 基础架构的一部分(请参阅AndroidImageButton)。LibgdxImageButton是一个带有 OpenGL 纹理引用的 Java 对象(请参阅LibgdxImageButton)。从 Android UI 基础架构的角度来看,Libgdx 应用程序只是一个全屏 OpenGL 视图,只有很少的元数据可供 Robotium 使用。

您也许可以使用原始的“clickOnScreen”基础架构,但您必须手动计算和跟踪屏幕上按钮的位置。此外,如果 Robotium 不包含 Libgdx 应用程序中不存在的对 Android UI 基础架构的其他依赖项,我会感到惊讶。

于 2013-03-29T06:41:03.603 回答