Linux에서 Android 용 UIAutomator 라이브러리를 사용하여 테스트를 실행하는 데 문제가 있습니다. 기본 설정은 넥서스 4,이 문제의 JDK6, 이클립스, 그리고 리눅스 민트 13UIAutomator는 Linux에서 빌드되었을 때 0 테스트를 실행하지만 다른 플랫폼에서는 정상적으로 작동합니다.
루트는 4.2.2과 에뮬레이터입니다 :
INSTRUMENTATION_STATUS: stream=
Test results for WatcherResultPrinter=
Time: 0.007
OK (0 tests)
INSTRUMENTATION_STATUS_CODE: -1
이 내가 무엇을 얻을 때 Linux에서 jar 파일을 작성하십시오. Windows 또는 OSX에서 빌드하면 모든 것이 원활하게 작동하는 것 같습니다. 이 특별한 경우에는 '집'버튼을 누르는 테스트가 하나뿐입니다.
다른 환경 (osx/windows)에서 동일한 코드 및 동일한 단계로 프로젝트를 만들면 테스트가 예상대로 실행됩니다.
내 질문은 - 왜 테스트 주자가 플랫폼에서와 달리 Linux에서 항아리를 만들 때 클래스를 찾을 수 없습니까? 내 최고의 추측 지금은 어떻게 든 자바 경로가 제대로 컴파일되지 않을 설정되어 있으므로 jar 파일이 잘못 빌드됩니다. 이클립스에서 테스트를 실행하면 원래 'ClassNotFoundException'을 얻었지만 osx/windows에서는 테스트가 JUnit에서 실행되지만 실패합니다.
나는 이것을 파헤 치면서 컴파일러가 모두 시스템의 다른 부분에서 다른 java 버전을 가리키고 있음을 발견했다. 이 문제를 해결하고 java6jdk의 인스턴스 하나를 제외한 모든 것을 삭제하고 JAVA_HOME, 이클립스 빌드 경로 및 Java 컴파일 경로를 모두 확인하여 동일한 인스턴스를 가리 킵니다.
이 모든 것 후에도 테스트는 계속 진행되는 것처럼 보이지만 테스트 러너는 테스트를 수행 할 수 없습니다. 나는 나의 지식의 끝자락에있다, 어떤 도움이라도 인정 될 것이다!
감사
편집 : 항아리 TVF :
[email protected]:~/workspace/TestOne/bin$ jar tvf testui1.jar
0 Sun Apr 07 14:23:24 PDT 2013 META-INF/
103 Sun Apr 07 14:23:22 PDT 2013 META-INF/MANIFEST.MF
1052 Sun Apr 07 14:23:24 PDT 2013 classes.dex
코드 : 너무 많은 작업과 노력 후
package com.test;
import android.util.Log;
public class FirstTest extends UiAutomatorTestCase {
public void thisTest() throws UiObjectNotFoundException {
getUiDevice().pressHome();
Log.i("HELP","HELP ME");
}
}
jar 파일을 비교 했습니까? –
bit for bit, no - vi에서 열어서 비교해 보았습니다. 적어도 비슷했는지 확인하고, 거기에 약간의 평문이 있었는지, 그들은 올바른 경로를 포함하고있는 것 같았습니다. 그들은 또한 거의 같은 크기였습니다. jar 파일을 비교하는 더 좋은 방법이 있습니까? 내용을 분석하여 포함 된 내용을 확인할 수있는 방법이 있습니까? – Brian
jar 파일의 압축을 풀면 포함 된 파일을 찾을 수 있습니다. 그런 다음 diff (Linux의 명령 행 유틸리티 등)를 사용하여 압축 해제 한 각 파일을 작업 jar 파일에서 압축 해제 된 동일한 파일 이름과 비교할 수 있습니다. 테스트의 이름과 함께 버크가있는 경우에 대비해 테스트 케이스 코드를 게시 할 수 있습니까? – JulianHarty