Android 라이브러리 프로젝트를 테스트하는 방법 Android Bitmap 클래스 (AndroindLib라고 부름)를 기반으로 Android

나는 유틸리티 클래스 (활동 없음) 만 포함하는 Android Bitmap 클래스 (AndroindLib라고 부름)를 기반으로 Android 라이브러리 프로젝트를 작성하고 있습니다. Android JUnit을 사용하여 테스트하려고했지만 AnroidLib.apk를 찾을 수 없다고 계속 불평합니다.

단위 테스트 Android 라이브러리 프로젝트에 올바른 방법은 무엇입니까?



답변

문서 인용 :

“라이브러리 프로젝트의 코드 및 리소스에 대한 테스트를 설정하는 데 권장되는 두 가지 방법이 있습니다.

  • 라이브러리 프로젝트에 의존하는 애플리케이션 프로젝트를 계측하는 테스트 프로젝트를 설정할 수 있습니다. 그런 다음 라이브러리 별 기능에 대한 테스트를 프로젝트에 추가 할 수 있습니다.

  • 라이브러리에 의존하는 표준 애플리케이션 프로젝트를 설정하고 해당 프로젝트에 계측을 배치 할 수 있습니다. 이를 통해 테스트 / 계측 및 테스트 할 코드를 모두 포함하는 자체 포함 된 프로젝트를 만들 수 있습니다. “


답변

테스트 프로젝트에서 라이브러리의 패키지와 동일하도록 패키지 이름을 변경하면됩니다. 예를 들어, 패키지가 "com.example.lib". 라이브러리를 대상으로하는 테스트 프로젝트를 만듭니다. 매니페스트 파일에서 package="com.example.lib.test", 및 targetPackage="com.example.lib". 패키지를 “com.example.lib.test”에서 “com.example.lib”로 변경하십시오 ( targetPackage그대로 두십시오).

또한, 라이브러리가 테스트 프로젝트에 참조되어 있는지 확인 하지 Java 빌드 경로에 있지만, 일반적인 안드로이드 라이브러리로 : 이클립스에가있는 라이브러리로 표시되어야 Project->Properties->Android탭하지만, 하지Project->Properties->Java Build Path탭을 선택합니다.

그런 다음 테스트를 실행하십시오.


답변

http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/ 은 CommonsWare의 답변에서 두 번째 제안을 구현하는 데 필요한 프로세스를 설명하는 데 도움이됩니다.


답변

문서 :

라이브러리 모듈 테스트는 앱 테스트와 동일합니다. 가장 큰 차이점은 라이브러리와 해당 종속성이 테스트 APK의 종속성으로 자동 포함된다는 것입니다. 즉, 테스트 APK에는 자체 코드뿐만 아니라 라이브러리의 AAR 및 모든 종속성도 포함됩니다. 별도의 ‘테스트중인 앱’이 없기 때문에 androidTest 작업은 테스트 APK 만 설치 (및 제거)합니다. 여러 매니페스트 파일을 병합 할 때 Gradle은 기본 우선 순위를 따르고 라이브러리의 매니페스트를 테스트 APK의 기본 매니페스트에 병합합니다.


답변

참고 : 이 솔루션은 Eclipse Indigo (3.8.2) 사용을 기반으로하며 기본 원칙은 동일하지만 다른 IDE에 대해 약간 다르게 구현해야 할 수 있습니다.

비슷한 문제가 있었고 다음 작업이 항상 작동한다는 것을 알았습니다.

( 참고 :이 지침은 처음부터 새 프로젝트 그룹을 빌드하기위한 것입니다. 프로젝트 그룹의 일부를 이미 빌드 한 경우 동일한 방식으로 연결되도록 프로젝트를 수정해야 할 수 있습니다. )

  1. 생성 중에 “Is Library”체크 박스를 선택하여 새 Android 라이브러리 프로젝트를 생성합니다. (예 : “RemingtonAndroidTools”라는 Android 프로젝트).
  2. Android 라이브러리 프로젝트를 빌드하고 bin 폴더에 jar 파일이 생성되었는지 확인합니다. (예 : “RemingtonAndroidTools.jar”라는 jar 파일)
  3. Android 테스트 앱으로 사용할 Android 앱을 테스트하기 위해 빈 Android 프로젝트를 만듭니다. (예 : “RemingtonAndroidToolsTestApp”이라는 Android 프로젝트). 테스트를 위해 추가해야하는 것이 없으면 Android 테스트 앱 프로젝트의 소스 코드 나 리소스를 수정할 필요가 없습니다. Android 테스트 앱 프로젝트를 수정하지 않고도 많은 것을 테스트 할 수 있습니다. Android Test App 프로젝트는 Android 라이브러리 프로젝트와 Android Junit 프로젝트를 연결하여 Android Junit을 통해 Android 라이브러리 프로젝트를 테스트 할 수 있도록합니다.
  4. Android 테스트 앱 프로젝트 (이 예에서는 “RemingtonAndroidToolsTestApp”)에 대한 Java 빌드 경로의 라이브러리 탭으로 이동합니다.
  5. “Add Jars …”버튼을 통해 Android 라이브러리 프로젝트 (이 예에서는 “RemingtonAndroidTools”)의 jar 파일 (이 예에서는 “RemingtonAndroidTools.jar”)을 추가합니다.
  6. Android 라이브러리 테스터 역할을 할 새 Android 테스트 프로젝트 (예 : ‘RemingtonAndroidToolsTester’)를 만들고 Android 테스트 앱 프로젝트 (이 예에서는 ‘RemingtonAndroidToolsTestApp’)를 대상으로 선택합니다.
  7. Android 라이브러리 테스터 프로젝트 (이 예에서는 “RemingtonAndroidToolsTester”)에 대한 Java 빌드 경로의 라이브러리 탭으로 이동합니다.
  8. “Add Jars …”버튼을 통해 Android 라이브러리 프로젝트 (이 예에서는 “RemingtonAndroidTools”)의 jar 파일 (이 예에서는 “RemingtonAndroidTools.jar”)을 추가합니다.
  9. Android Library Tester 프로젝트에서 Android 패키지의 마지막 폴더 (예 : “danny.remington.remington_android_tools_test_app.test”)를 찾고 ActivityInstrumentationTestCase2에서 상속되는 테스트 클래스 (예 : “MainActivityTest”)를 추가합니다.
  10. Android 테스트 앱 (이 예에서는 ‘RemingtonAndroidToolsTestApp’)의 활동 (예 : ‘TestActivity’)을 ActivityInstrumentationTestCase2의 매개 변수로 사용하도록 테스트 클래스 (이 예에서는 “TestActivityTest”)를 편집합니다.
  11. 테스트 클래스 (이 예에서는 “TestActivityTest”)를 편집하고 super (Class)를 호출하고 Android 테스트 앱의 클래스 (예 : “TestActivity.class”)를 전달하는 기본 생성자를 만듭니다.

다음과 유사한 3 개의 프로젝트 (Android 라이브러리, Android 테스트 앱, Android 라이브러리 테스터)가 있어야합니다.

다음과 유사한 Android 라이브러리를 테스트하기위한 클래스로 끝나야합니다.

package danny.remington.remington_android_tools_test_app.test;

import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;

/**
 *
 */
public class TestActivityTest extends
      ActivityInstrumentationTestCase2<TestActivity> {

   public TestActivityTest() {
      super(TestActivity.class);
   }

}

그런 다음 원하는 테스트를 추가 할 수 있습니다. Android 특정 구성 요소 (예 : Assets 폴더)에 액세스해야하는 경우가 아니면 테스트를 실행하기 위해 Android 테스트 앱 (이 예에서는 ‘RemingtonAndroidToolsTestApp’)을 추가로 참조 할 필요가 없습니다. Android 특정 구성 요소에 액세스해야하는 경우 Android 테스트 앱 (이 예에서는 ‘RemingtonAndroidToolsTestApp’)을 수정 한 다음 표준 Android Junit API에서 제공하는 도구를 통해 참조하면됩니다. (여기에서 자세한 내용을 읽을 수 있습니다 : http://developer.android.com/tools/testing/testing_android.html )


답변

ulitiy 클래스가 Android 특정 코드에 의존하지 않는 경우 표준 JUnit 단위 테스트를 사용할 수 있습니다. Android 버전을 사용할 필요가 없습니다.