2012-03-13 5 views
1

저는 Android 애플리케이션의 테스트 자동화에 Robotium을 사용하고 있습니다. 그것은 훌륭하지만 유지 관리가 엄청납니다.Android, Robotium - 지역화 된 빌드를 사용하는 방법?

내 응용 프로그램은 20 개 언어로 현지화되어 있으며 응용 프로그램 문자열 리소스를 내 테스트 APK (내 자동화 된 테스트 실행 논리 포함)에 컴파일하고 런타임시 메뉴 항목 등을 찾기 위해 문자열을 사용합니다 . 이것은 Google Code의 Robotium 프로젝트 페이지에서 찾은 예제와 일치합니다. 예를 들어

,

solo.clickOnText(res.getString(R.string.settings_menu)); 

제가하는 데 문제는 문자열 일찍 내 제품 빌드 매일 변경 될 수 있다는 점이다.

항목을 클릭하기 위해 실제 문자열과 반대로 문자열 ID를 사용할 수있는 방법이 있습니까? 이것들은 모든 언어에서 유일 할 것이고 나는 현재 가지고있는 높은 유지 보수 비용을 가지지 않을 것입니다.

TIA. 올바른 문자열을 마련한다에

답변

1

상호 작용하려는보기의 리소스 ID를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

+0

감사합니다. Renas - 텍스트 링크는 어떻습니까? 위의 pnly 버튼에 대한 작동합니까? 내 애플 리케이션에 텍스트 링크가 많이 있어요. –

+0

동일하지만 단추 대신 TextView를 사용합니다. – Renas

1

당신은 상관없이 당신이 당신의 언어를 변경할 것을

String myLocalizedString = getActivity().getResources().getString(R.string.settings_menu); 
solo.clickOnText(myLocalizedString); 

를 사용 할 수 있어야합니다. resource qualifiers을 사용하고 있다고 가정합니다.

res 
    values 
    strings.xml 
    values-fr 
    strings.xml 
+0

:

그런 다음 아래와 같은 스크립트를 사용합니다. 내 질문은 대안이 있는지입니다. R.java에서 앱을 컴파일 할 때 고유 한 문자열 ID가 생성 된 것처럼 보입니다. 실제 문자열 값과 반대로 사용할 수 있다면 올바른 문자열 리소스를 걱정할 필요가 없습니다. 빌드) –

+0

'getActivity(). getString()'조금 짧습니다. –

0

테스트 된 프로젝트의 리소스 ID를 사용합니다 (APK 만 테스트하는 경우 R.java를 테스트 프로젝트로 가져 오기). 이것은 내가 현재 사용하고 접근이다

View view = solo.getCurrentActivity().findViewById(R.id.resourceId); 
solo.clickOnView(view); 
관련 문제