Android 앱 내에 일부 화면 변경(보기, 레이블 또는 표시/사라지는 버튼 등)이 있는 카메라 및/또는 갤러리 기능이 있는 화면이 있고 해당 기능/화면에 대한 몇 가지 Espresso 테스트를 작성해야 할 때 몇 가지가 있습니다. 내가 사용하고 있는 도우미의 모든 것을 여러분과 공유하고 싶습니다. 권한 부여 앱 내에서 카메라를 사용할 때 사진을 읽고/저장하려면 장치에서 일부 권한을 부여해야 합니다. 이러한 권한은 일반적으로 READ_EXTERNAL_STORAGE 및 WRITE_EXTERNAL_STORAGE와 관련되어 런타임에 요청됩니다.
따라서 GrantPermissionRule은 Android M(API 23) 이상에서 런타임 권한 부여를 허용하고 테스트 클래스에 적용할 때 이 규칙은 요청된 모든 런타임 권한 부여를 시도합니다.@get:Rulevar mRuntimePermissionRule = GrantPermissionRule.grant(android.
Manifest.permission.WRITE_EXTERNAL_STORAGE)이 규칙은 일반적으로 권한 대화 상자가 Apps Ui를 표시 및 차단하지 않도록 런타임 권한을 부여하는 데 사용되며 공식 문서에 따르면 이 규칙에 따라 WRITE_EXTERNAL_STORAGE가 요청될 때 자동으로 READ_EXTERNAL_STORAGE를 부여합니다.갤러리 테스트코드 앱에서 갤러리 아이콘을 클릭할 때 테스트하면 이미지가 선택되어 화면에 표시됩니다. 여기에서 가장 먼저 해야 할 일은 도우미 메서드(CameraAndGallery.xml)가 있다는 것입니다.
savePickedImage) 테스트에 사용할 이미지(간단함을 위해 ic_launcher 아이콘)를 테스트에 표시되는 로컬 파일로 저장합니다. 활동 매개변수는 ActivityTestRule:@get:Rulevar mActivityTestRule = IntentsTestRule(MyActivity: :class.java) 그런 다음 Espresso Intents 매처에서 사용할 ActivityResult 객체(모의 객체와 비슷하지만 Android Intent용)를 생성합니다(발신 인텐트 일치 및 유효성 검사):val imgGalleryResult = CameraAndGallery.createImageGallerySetResultStub(mActivityTestRule.
활동) Intent(hasAction(Intent.ACTION_CHOOSER)).respondWith(imgGalleryResult)여기서 비밀은 이전에 저장하고 결과로 최종 사용된 파일을 요청하는 것입니다.
참고: 에스프레소 인텐트로 작업하려면 앱 빌드에 이 종속성을 추가해야 합니다. gradle 파일:androidTestImplementation androidx.test.
에스프레소:espresso-intents:$espressoVersion 작성 중인 테스트의 경우 갤러리에서 선택한 이미지가 사용자에게 표시되는 ImageView에 설정되어 있다고 가정하고 테스트의 마지막 부분은 다음을 확인하는 것입니다. 이미지가 표시됩니다(메서드 hasImageSet()):onView(withId(R.id.auctionphotos_bigimage_viewer)).
check(matches(hasImageSet()))Camera Test갤러리 테스트와 유사하며 카메라 카메라에서 이미지를 가져오는 테스트는 거의 동일한 단계를 따르지만 이 경우 이미지를 이전에 저장할 필요가 없으며 다음의 결과만 모의합니다. 카메라:모의 캡처 결과는 다음과 같습니다. ACTION_IMAGE_CAPTURE)). respondWith(imgCaptureResult) 그리고 이를 통해 이미지가 촬영되어 표시되었는지 확인할 수 있습니다. onView(withId(R.
id.auctionphotos_bigimage_viewer)).check(matches(hasImageSet()))마지막으로, Espresso 테스트 및 인텐트에 관한 내용을 조금 더 살펴보고 싶다면 공식 Android 팀의 이 리포지토리를 살펴보는 것이 좋습니다.
심천 TigerWong 기술 Co.,Ltd
전화:86 13717037584
이메일: info@sztigerwong.com
주소: 실리콘밸리 파워디지털산업단지 A2빌딩 1층 22 Dafu Road, Guanlan Street, Longhua District,
심천, 광동성, 중국