Android 机器人拖动不起作用
我已经用AndEngine编写了一个游戏,我想用Robotium测试它。问题是robotium的拖动功能不起作用。我已经将Robotum4.0JAR添加到构建路径并导出,还有我的清单文件 似乎是正确的。第二次测试(操纵杆)失败,因为移动从未发生。这是测试类:Android 机器人拖动不起作用,android,testing,drag-and-drop,andengine,robotium,Android,Testing,Drag And Drop,Andengine,Robotium,我已经用AndEngine编写了一个游戏,我想用Robotium测试它。问题是robotium的拖动功能不起作用。我已经将Robotum4.0JAR添加到构建路径并导出,还有我的清单文件 似乎是正确的。第二次测试(操纵杆)失败,因为移动从未发生。这是测试类: package cs428.uiuc.robotswarms.test; import junit.framework.Assert; import org.andengine.entity.sprite.Animate
package cs428.uiuc.robotswarms.test;
import junit.framework.Assert;
import org.andengine.entity.sprite.AnimatedSprite;
import com.jayway.android.robotium.solo.Solo;
import cs428.uiuc.robotswarms.RobotSwarms;
import android.test.ActivityInstrumentationTestCase2;
public class testMotion extends ActivityInstrumentationTestCase2<RobotSwarms> {
public testMotion() {
super(RobotSwarms.class);
}
private Solo solo;
protected void setUp() throws Exception {
super.setUp();
setActivityInitialTouchMode(true);
solo = new Solo(getInstrumentation(), getActivity());
}
protected void tearDown() throws Exception {
solo.finishOpenedActivities();
super.tearDown();
}
private void waitForSpriteInitialisation(RobotSwarms ActivityData) {
while (ActivityData.getPlayerSprite() == null) {
}
}
public void testJoystickMovement() {
RobotSwarms ActivityData = getActivity();
final float fromX = 400.0f;
float toX = 380.0f;
final float fromY = 208.0f;
float toY = 208.0f;
AnimatedSprite playerSprite;
waitForSpriteInitialisation(ActivityData);
playerSprite = ActivityData.getPlayerSprite();
float initialPlayerXPosition = playerSprite.getX();
solo.sleep(2000);
solo.drag(fromX, toX, fromY, toY, 5);
solo.sleep(2000);
playerSprite = ActivityData.getPlayerSprite();
float playerMovedX = playerSprite.getX();
Assert.assertTrue(playerMovedX != initialPlayerXPosition);
}
}
包cs428.uiuc.robotswarms.test;
导入junit.framework.Assert;
导入org.andengine.entity.sprite.AnimatedSprite;
导入com.jayway.android.robotium.solo.solo;
导入cs428.uiuc.robotswarms.robotswarms;
导入android.test.ActivityInstrumentationTestCase2;
公共类testMotion扩展了ActivityInstrumentationTestCase2{
公共测试动议(){
超级(机器人群类);
}
私人独奏;
受保护的void setUp()引发异常{
super.setUp();
setActivityInitialTouchMode(真);
solo=新的solo(getInstrumentation(),getActivity());
}
受保护的void tearDown()引发异常{
solo.finishOpenedActivities();
super.tearDown();
}
PriteInitialization(机器人群活动数据)的专用无效等待{
while(ActivityData.getPlayerSprite()==null){
}
}
公共无效测试JoyStickMovement(){
机器人群集ActivityData=getActivity();
最终浮动范围X=400.0f;
浮子毒性=380.0f;
最终浮动fromY=208.0f;
浮子玩具=208.0f;
动画精灵玩家Prite;
等待PriteInitialization(活动数据);
playerSprite=ActivityData.getPlayerSprite();
float initialPlayerXPosition=playerSprite.getX();
solo.sleep(2000年);
单人拖拽(fromX,toX,fromY,toY,5);
solo.sleep(2000年);
playerSprite=ActivityData.getPlayerSprite();
float playerMovedX=playerSprite.getX();
Assert.assertTrue(playerMovedX!=initialPlayerXPosition);
}
}
目标应用程序清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cs428.uiuc.robotswarms"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" android:debuggable="true">
<activity
android:name="cs428.uiuc.robotswarms.RobotSwarms"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cs428.uiuc.robotswarms.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="cs428.uiuc.robotswarms" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
测试项目清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cs428.uiuc.robotswarms"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" android:debuggable="true">
<activity
android:name="cs428.uiuc.robotswarms.RobotSwarms"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cs428.uiuc.robotswarms.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="cs428.uiuc.robotswarms" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
我曾尝试使用TouchUtils代替Robotium,但这似乎也不起作用。
编辑:Bump查看此链接:,在此链接中,您可以看到如何滚动或拖动动态屏幕,而不考虑屏幕大小。。。希望这能帮助你。。。