2017-09-09 1 views
0

내 테스트에서 스크린 샷을 페이스 북의 라이브러리를 사용하여 다음 비교 Karumi의 슛 플러그인 (https://github.com/karumi/shot)을 사용하고 있습니다 : API를 실행할 때 http://facebook.github.io/screenshot-tests-for-android/Facebook`s 스크린 샷 테스트보다 더 큰 23

이 라이브러리에 문제가 있습니다를 WRITE_EXTERNAL_STORAGE 권한이 필요하고 api 23 이후로 테스트 중에 사용 권한을 부여하는 것이 간단한 작업이 아니기 때문에 23보다 크다.

에스프레소 3.0에는 GrantPermissionRule이 추가되었으며이 기능을 사용하면 이전에 테스트 실행에 대한 권한을 쉽게 설정할 수 있습니다.

글쎄, 나는 규칙 추가 :

@Rule @JvmField 
val grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) 

을 그리고 다음 코드를 사용하여 스크린 샷을했다 :

override fun onCreate(args: Bundle) { 
    super.onCreate(args) 
    ScreenshotRunner.onCreate(this, args) 
} 

override fun finish(resultCode: Int, results: Bundle) { 
    ScreenshotRunner.onDestroy() 
    super.finish(resultCode, results) 
} 

하지만이 : 나는 실행되는 사용자 정의의 TestRunner가

Screenshot.snapActivity(activityTestRule.activity).record() 

테스트를 실행하면 다음 오류가 표시됩니다.

java.lang.RuntimeException: Failed to create the directory for screenshots. Is your sdcard directory read-only? 
    at com.facebook.testing.screenshot.internal.ScreenshotDirectories.getSdcardDir(ScreenshotDirectories.java:66) 

답변

1

플러그인은 테스트중인 APK가 아닌 테스트중인 APK에서 권한을 부여 받아야하므로 캡쳐 화면을 API> = 23에 저장하는 데 실패합니다. 부여 권한 테스트 규칙을 사용하면이 기능을 사용할 수 없습니다. 이것은 공식적인 Facebook 라이브러리에서 지원되지 않으며 우리는 지금 지원하지 않습니다 : (

또한 GitHub 저장소에서 귀하의 질문에 답변했습니다 https://github.com/Karumi/Shot/issues/19#issuecomment-328334528