3

最近、TA 用の robolectric を使用して、Android 用のデモ アプリを作成しています。プロジェクトを実行できますが、テストを追加すると、次のようなエラーが表示されます。

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」である理由がわかりません。どこに設定すればいいのか、どうすれば正しく設定できるのかわかりません。

4

2 に答える 2

0

(RC1の代わりに)robolectric jarのバージョン1.0を使用すると、この問題が修正されました

 <dependency>
        <groupId>com.pivotallabs</groupId>
        <artifactId>robolectric</artifactId>
        <version>1.0</version>
        <scope>test</scope>
 </dependency>
于 2012-07-17T13:11:02.530 に答える
-2

これは Robolectric の必要性 /Users/majie/Downloads/android-sdk-macosx/platforms/android-9/data/res/values ですが、実際にはコンピューターには存在しません。

これは簡単に解決できます Android-9 SDK をダウンロードするか、Android-8 などの他の SDK をコピーして、名前を Android-9 に変更するだけです

それなら大丈夫です。

于 2012-09-14T02:55:47.513 に答える