1

나는 이미징 응용 프로그램을 만들고 있습니다. 비트 맵 관련 함수에 대한 단위 테스트를 구현하고 싶습니다. 또한 출력 비트 맵을 볼 필요가 있습니다. 그래서 난 내 Mac에서 파일로 출력 이미지를 덤프 할 수 있으며 수동으로 열단위 테스트하는 방법 android.graphics.Bitmap 및 BitmapFactory?

  1. 실행 test/java에서 테스트 :

    나는 두 가지 옵션을 시도했다. 하지만 android.graphics.BitmapFactory not mocked이 있습니다.

  2. 은 너무 BitmapFactory가 완전히 구현 androidTest/java에서 테스트 만 실행하여 adb pull을 사용하여 파일을 끌어하려고 할 때

    • 내가 access denied을 얻었다을 mockContext.openFileOutput(fileName, Context.MODE_PRIVATE)
    • 내가 부여 할 수 없습니다 때문에 외부 디렉토리에 쓸 수 없습니다 쓰기없이 액세스 및 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)을 사용하여 활동 (편집 : 나는 당신이 READB 및 유틸리티를 사용하여 쓰기 및 저장 장치를 부여 할 수 틀렸어)
    • 만약 내가 그것을 작동하게, 나는 자동화하는 gradle 작업에 연결하는 방법을 모르겠어요 풀 명령 또는 실행시 그랜드 쓰기 액세스.

은 어떻게 비트 맵 관련 코드를 테스트? 나는 옵션이 없어!

+0

단위 테스트 응용 프로그램이 테스트의 응용 프로그램과 동일한 권한을가집니다. 단위 테스트에서 개인 저장소에서 사진을 가져 와서 공용 저장소로 옮길 수 있어야합니다. 그것을 파일 서버로 전송할 수도 있습니다. – DeeV

답변

0

비트 맵 관련 앱의 주요 사항은 장치의 메모리 사용량을 관리해야합니다.

그래서 일부 캐싱 메커니즘을 사용하여 비트 맵을 적절하게 관리해야합니다.

Android Studio의 메모리 섹션에서 모니터 서비스를 사용할 수 있습니다.

+0

대답을 이해할 수 없다 – RenaudBlue

+0

디바이스를 사용하여 비트 맵 구현을 테스트하고 싶습니까? – ViramP

+0

아니요 android.graphics.Bitmap과 관련된 복잡한 작업을 테스트하고 싶습니다. – RenaudBlue

1

마침내 무슨 짓을 :

  1. 내가 전에 수동으로 테스트 한 후 호출 할 수있는 두 개의 Gradle을 작업을 만듭니다.
    • imagingBeforeTest

      는 이후를 탐색 할 수 있도록 imagingAfterTest 로컬 빌드 디렉토리에 장치에 디렉토리의 내용을 당겨 스토리지 및 청소 디렉토리
    • 에 액세스 할 수있는 권한을 부여한다.
  2. 내가 Gradle 작업에서 정의한 것과 동일한 디렉토리를 가리키는 상수를 만듭니다.

자바 일정 :

public static final File ANDROID_TEST_DIR = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "mypackage"); 

Gradle을 파일 :

def androidPlugin = project.plugins.findPlugin("android") 
def adb = androidPlugin.sdkHandler.sdkInfo?.adb 
def mypackageDir = '/storage/emulated/0/Download/mypackage' 

//Grant necessary permissions and create storage dir 
task imagingBeforeTest(type: Exec) { 
    commandLine "$adb", 'shell', 'pm', 'grant', 'fr.mycompany.mypackage', 'android.permission.READ_EXTERNAL_STORAGE' 
    commandLine "$adb", 'shell', 'pm', 'grant', 'fr.mycompany.mypackage', 'android.permission.WRITE_EXTERNAL_STORAGE' 
    commandLine "$adb", 'shell', 'rm', '-r', "$mypackageDir" 
    commandLine "$adb", 'shell', 'mkdir', "$mypackageDir" 
} 

//Pull content of storage dir to the local build directory 
task imagingAfterTest(type: Exec) { 
    // Alias is /storage/self/primary/Download/mypackage 
    File testDir = new File(rootProject.buildDir.absoluteFile, "/pulledTest") 
    testDir.mkdir() 
    commandLine "$adb", 'pull', "$mypackageDir", testDir.getAbsolutePath() 

}