2011-02-18 2 views
6

ActivityInstrumentationTestCase2을 확장하는 Android 앱용 테스트 사례를 작성 중입니다."bound mismatch"오류가있는 Eclipse 테스트에서 Android 테스트 클래스가 컴파일되지 않습니다.

일식에서
public class SolutionEntryActivityTest extends ActivityInstrumentationTestCase2<SolutionEntryActivity> { 

    public SolutionEntryActivityTest() { 

     super(SolutionEntryActivity.class); 
    } 
} 

,이 코드는 오류와 함께 컴파일에 실패 : 테스트 클래스는 다음과 같습니다 Bound mismatch: The type SolutionEntryActivity is not a valid substitute for the bounded parameter <T extends Activity> of the type ActivityInstrumentationTestCase2<T>

그러나 SolutionEntryActivity가 정말 android.app.Activity이며, 유형 계층은 다음과 같이이다 :

Activity 
    OrmLiteBaseActivity<H> (abstract) 
     KabowieActivity 
      PracticeActivity (abstract) 
       SolutionEntryActivity 

20042005에서 두 개의 이클립스 버그가 발견되었는데 비슷한 문제를 해결하는 것으로 보이지만 긴 수정해야합니다.

Eclipse Helios를 Android 2.2 및 Sun Java 1.6과 함께 사용하고 있습니다.

어떤 일이 벌어지고 있는지 알 수 있습니까?

답변

5

문제는 android eclipse 프로젝트로 테스트 프로젝트를 만들 때 테스트 할 프로젝트의 외부 라이브러리에 대한 참조가 자동으로 해결되지 않는다는 것이 었습니다. OrmLiteBaseActivity 클래스 (원본 질문의 유형 계층 참조)는 테스트중인 프로젝트의 빌드 경로에 포함 된 외부 jar에서 가져옵니다. 이 외부 항아리는 테스트 프로젝트의 빌드 경로에도 명시 적으로 포함되어야합니다. 이것이 버그로 간주 될 수 있는지, 그렇다면 어디에 있는지. 그러나 원래 프로젝트에서 사용한 모든 라이브러리를 테스트 프로젝트에서도 사용할 수 있어야합니다. 어쨌든, 질문을 읽은 사람들 덕분입니다.

편집 수정 : JUnit을 모두 정말 같은 라이브러리 것을 이해하지 못하기 때문에 작동하지 않습니다합니다 (testproject에 한 번 테스트중인 프로젝트의 하나에 한 번 등)를 두 번 buildpath에 동일한 라이브러리를 추가 . 컴파일은 성공하지만 LogCat은 SolutionEntryActivity의 수퍼 클래스가 다른 출처라는 오류 메시지를 표시합니다. 여기에있는 해결책은 테스트 프로젝트의 buildpath에 직접 추가하는 대신 원본 프로젝트 (빌드 경로 구성 -> 순서 및 내보내기 -> 내보낼 libs 선택)에서 외부 라이브러리를 내보내는 것입니다.

관련 문제