2012-07-12 4 views
3

요즘 robolectric를 TA로 사용하여 Android 용 데모 앱을 작성하고 있습니다. 나는 프로젝트를 실행할 수 있지만 내가 테스트를 추가 할 때,이 같은 오류를 보여줍니다Maven + Robolectric, 리소스를 찾을 수 없습니까?

error message="java.lang.RuntimeException: no such directory /Users/majie/Downloads/android-sdk-macosx/platforms/android-9/data/res/values" type="java.lang.RuntimeException">java.lang.RuntimeException: java.lang.RuntimeException: no such directory /Users/majie/Downloads/android-sdk-macosx/platforms/android-9/data/res/values 
at com.xtremelabs.robolectric.res.ResourceLoader.init(ResourceLoader.java:93) 
at com.xtremelabs.robolectric.res.ResourceLoader.inflateView(ResourceLoader.java:261) 
at com.xtremelabs.robolectric.shadows.ShadowLayoutInflater.inflate(ShadowLayoutInflater.java:43) 
at com.xtremelabs.robolectric.shadows.ShadowLayoutInflater.inflate(ShadowLayoutInflater.java:48) 
at android.view.LayoutInflater.inflate(LayoutInflater.java) 
at com.xtremelabs.robolectric.shadows.ShadowActivity.setContentView(ShadowActivity.java:73) 
at android.app.Activity.setContentView(Activity.java) 
at com.cisco.jabberim.ui.WelcomeActivity.onCreate(WelcomeActivity.java:21) 
at Test.FTE.WelcomeActivityTest.setUp(WelcomeActivityTest.java:28) 

테스트 파일은 다음과 같다 :

:

@RunWith(RobolectricTestRunner.class) 
public class WelcomeActivityTest { 
private WelcomeActivity mActivity; 
private TextView text; 

@Before 
public void setUp(){ 
    mActivity = new WelcomeActivity(); 
    mActivity.onCreate(null); 
    text = (TextView) mActivity.findViewById(R.id.welcome); 
} 

@Test 
public void textIsNotNull(){ 
    String str = text.getText().toString(); 
    assertNotNull(str); 
} 
} 

pom.xml 파일을 다음과 같이이다

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven- v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>im</groupId> 
<artifactId>Im</artifactId> 
<version>1.0.0-SNAPSHOT</version> 
<packaging>apk</packaging> 
<name>IM demo</name> 

<dependencies> 
    <dependency> 
     <groupId>android</groupId> 
     <artifactId>android</artifactId> 
     <version>3.0_r2</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Make sure this is below the android dependencies --> 
    <dependency> 
     <groupId>com.pivotallabs</groupId> 
     <artifactId>robolectric</artifactId> 
     <version>1.0-RC1</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.2</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <finalName>${project.artifactId}</finalName> 

    <plugins> 
     <plugin> 
      <!-- See http://code.google.com/p/maven-android-plugin/ --> 
      <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
      <artifactId>android-maven-plugin</artifactId> 
      <version>3.2.0</version> 
      <configuration> 
       <sdk> 
        <!-- platform or api level (api level 8 = platform 2.2)--> 
        <platform>11</platform> 
       </sdk>   
      </configuration> 
      <extensions>true</extensions> 
     </plugin> 
    </plugins> 
</build> 

정말 어떻게 해결해야할지 모르겠다. 이상한 경로가 "/ Users/majie/Downloads/android-sdk-macosx/platforms/android-9/data/res/values"인 이유를 모르겠습니다. 나는 그것을 어디에 놓을 것인지, 어떻게 바르게 할 것인지 모른다.

+0

Android SDK 관리자에서 Android 9 SDK를 다운로드 했습니까? – yorkw

답변

0

내가위한 ResourceLoader 소스

private String getAndroidResourcePathFromSystemEnvironment() { 
    // Hand tested 
    String resourcePath = System.getenv().get("ANDROID_HOME"); 
    if (resourcePath != null) { 
     return new File(resourcePath, getAndroidResourceSubPath()).toString(); 
    } 
    return null; 
} 

그래서 난 당신이 ANDROID_HOME 환경 변수를 시도해야 할 생각 것을 발견했다. (대신 RC1의) robolectric 항아리의 버전 1.0을 사용하여

+0

.bash_profile의 ANDROID_HOME은 export ANDROID_HOME =/Users/majie/Downloads // android-sdk-macosx입니다. 나는 그것이 틀렸다고 생각하지 않는다. BTW, 테스트없이, 나는 프로젝트를 만들 수 있습니다. 그래서 robolectric에 경로를 설정하는 어딘가에 있습니까? – mjgrrrr

0

나를 위해이 문제를 해결

<dependency> 
     <groupId>com.pivotallabs</groupId> 
     <artifactId>robolectric</artifactId> 
     <version>1.0</version> 
     <scope>test</scope> 
</dependency> 
-2

이것은 Robolectric 필요/사용자/majie/다운로드/안드로이드-SDK-에서라도/플랫폼/안드로이드-9/데이터/해상도/값은 컴퓨터에 실제로 존재하지 않습니다.

이 쉽게

은 그냥 같은 안드로이드-8로 안드로이드-9 SDK를 다운로드하거나 다른 SDK를 복사 해결하고, 안드로이드-9

와 함께 다음이 확인됩니다 이름을 바꿉니다.

관련 문제