2013-07-26 4 views
3

재생 시장에서 앱을 테스트하고 싶습니다. CN가 해결 될 수없는 변수apk 파일 만있는 경우 R.id를 robotium에서 사용하는 방법

어떻게 내가이 poblem를 해결할 수있는 - 나는 나는`가

이 CN은

solo.clickOnView(solo.getView(cn.wps.moffice_eng.R.id.writer_edittoolbar_saveBtn)); 
사용하려고 문제가? 알다시피, 내가 테스트 한 응용 프로그램의 R.id 파일이 없기 때문에 R.id를 사용할 수 없습니다.

내 코드

package com.example.android.apis.test; 

import android.test.ActivityInstrumentationTestCase2; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.View; 
import android.widget.ListView; 

import com.jayway.android.robotium.solo.Solo; 



      @SuppressWarnings("unchecked") 
      public class Test extends ActivityInstrumentationTestCase2 { 

        private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "cn.wps.moffice.documentmanager.PreStartActivity"; 

        private static Class<?> launcherActivityClass; 
        static{ 
          try { 
            launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); 
          } catch (ClassNotFoundException e) { 
            throw new RuntimeException(e); 
          } 
        } 

        @SuppressWarnings("unchecked") 
        public Test() throws ClassNotFoundException { 
          super(launcherActivityClass); 
        } 

        private Solo solo; 

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

        public void testSimple() { 

         solo.sleep(2000);     
         solo.clickOnButton(1); 
         solo.sleep(2000); 
         solo.clickOnImage(6); 
         solo.sleep(2000); 
         solo.clickInList(0); 
         solo.sleep(5000); 

         solo.sendKey(KeyEvent.KEYCODE_P); 
         solo.sendKey(KeyEvent.KEYCODE_R); 
         solo.sendKey(KeyEvent.KEYCODE_O); 

         solo.sendKey(Solo.ENTER); 
         solo.sleep(2000); 


         solo.clickOnView(solo.getView(cn.wps.moffice_eng.R.id.writer_edittoolbar_saveBtn)); 

        } 


        @Override 
        public void tearDown() throws Exception { 
          solo.finishOpenedActivities(); 

       } 
      } 

및 매니페스트

<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.example.android.apis.test"> 

    <uses-sdk android:minSdkVersion="13"/> 

    <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="cn.wps.moffice_eng"/> 

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 

    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> 
     <uses-library android:name="android.test.runner"/> 
    </application> 

</manifest> 

내 솔루션 : 나는 해결책을 발견 -이었다 - 나는 APK 파일의 끝이 R.id가 robotium 프로젝트에 파일을 끌어 디 컴파일 내 질문의 주요 순간

답변

0

getView(String id)에 소개되었습니다. robotium 4.2. 다음과 같이 표시되어야합니다 :

solo.clickOnView(solo.getView("cn.wps.moffice_eng.R.id.writer_edittoolbar_saveBtn")); 
+0

'junit.framework.AssertionFailedError를 :보기가 null 때문에 클릭 할 수 없습니다' 을 그것은 어떤 조회수를 찾을 수 없습니다!. "cn.wps.moffice_eng.R.id.writer_edittoolbar_saveBtn"이 맞습니까? 또한 다른 R.id 요소에서도 발생합니다. – user1835337

+0

시도해 볼 수 있습니다 : solo.clickOnView (solo.getView ("writer_edittoolbar_saveBtn")); 또는 유사합니다. – Renas

0

첫 번째 단계는 테스트 할 apk를 사퇴하는 것입니다. @Renas 제안으로 getView(String id)는 당신이 필요로하는 무엇을,

View view = solo.getView(com.test.app.R.id.resourceId); 
solo.clickOnView(view); 
+0

그것은 '변수로 해석 될 수 없습니다'라고 말합니다. Offcourse,이 패키지 이름은 모바일에서 실행될 때 발견되지만 컴파일러는 어떻게됩니까? 컴파일러가이 패키지를 알지 못합니까? – Khushboo

+0

당신의 예가 유용했습니다. Thx +1 –

2

:

은 그 때 나는 다음과 같은 스크립트를 사용합니다.

로보트 5.0.1 전체 이름이 아닌 id 문자열 만 사용해야합니다. 그것은 다음과 같아야합니다

solo.clickOnView(solo.getView("resourceId")); 
+0

해결책을 찾았습니다. apium 파일의 압축을 해제하여 R.id 파일을 robotium 프로젝트에 가져 왔습니다. 그게 내 질문의 핵심 순간이었습니다. – user1835337

관련 문제