मैं कुछ समय के लिए मैवेन, रोबोलेक्ट्रिक, एक्शनबार शेरलॉक, और इंटेलिज प्राप्त करने की कोशिश कर रहा हूं, सभी अच्छी तरह से खेलने के लिए दीवार के खिलाफ अपने सिर को टक्कर लगी है। मैंने अभी इंटेलिज के साथ इमारत पर छोड़ दिया है और मैवेन पर ध्यान केंद्रित कर रहा हूं।आप एंड्रॉइड प्रोजेक्ट में Robolectric, Maven, ActionBarSherlock (और अधिमानतः + IntelliJ) को कैसे एकीकृत करते हैं?
मेरे पास मैवेन बिल्ड में परीक्षण छोड़ने पर एक एप बार है (जो मुझे बताता है कि मैं एक्शनबार एकीकरण मोर्चे पर जाने के लिए अच्छा हूं)। IntelliJ बिल्ड ManifestParsingTest.java पर शिकायत करता है कि शिकायत है कि यह नहीं जानता कि जूनिट कहाँ है (अन्य मुद्दों के बीच)।
Robolectric एकीकरण
मैं पहले से ही Robolectric परियोजना में सफलतापूर्वक चल रहा था। मैं (ShadowSherlockFragmentActivity.java
जो src/test/java/com/blah/blah/support/shadows/
में रहती है को छोड़कर) src/test/java/com/blah/blah/support/
में Jake Wharton's gist से फाइल की नकल की और अपने कस्टम परीक्षण धावक के लिए निर्माता में इस लाइन डाल (support
फ़ोल्डर में जीवन):
ActionBarSherlock.registerImplementation(ActionBarSherlockRobolectric.class);
mvn त्रुटियों
मैं इन निर्माण त्रुटियों में चल रहा हूँ (इंटेलीजे भी एक ही सामान के लिए लाल squigglies है):
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:testCompile (default-testCompile) on project Blah: Compilation failure: Compilation failure:
[ERROR] /Users/clatislaw/Documents/Code/Android/projectName/src/test/java/com/blah/blah/support/SherlockResourceLoader.java:[29,9] cannot find symbol
[ERROR] symbol : constructor ResourceLoader(int,java.lang.Class,java.util.List<java.io.File>,java.io.File)
[ERROR] location: class com.xtremelabs.robolectric.res.ResourceLoader
[ERROR] /Users/clatislaw/Documents/Code/Android/projectName/src/test/java/com/blah/blah/support/SherlockResourceLoader.java:[45,5] method does not override or implement a method from a supertype
[ERROR] /Users/clatislaw/Documents/Code/Android/projectName/src/test/java/com/blah/blah/support/ActionBarSherlockTestRunner.java:[39,37] resourceLoaderForRootAndDirectory has private access in com.xtremelabs.robolectric.RobolectricTestRunner
[ERROR] /Users/clatislaw/Documents/Code/Android/projectName/src/test/java/com/blah/blah/support/ActionBarSherlockTestRunner.java:[47,30] cannot find symbol
[ERROR] symbol : method getResourcePath()
[ERROR] location: class com.xtremelabs.robolectric.RobolectricConfig
[ERROR] /Users/clatislaw/Documents/Code/Android/projectName/src/test/java/com/blah/blah/support/ActionBarSherlockTestRunner.java:[48,9] resourceLoaderForRootAndDirectory has private access in com.xtremelabs.robolectric.RobolectricTestRunner
[ERROR] /Users/clatislaw/Documents/Code/Android/projectName/src/test/java/com/blah/blah/support/ActionBarSherlockTestRunner.java:[38,3] method does not override or implement a method from a supertype
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>com.blah.blah</groupId>
<artifactId>projectName</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>apk</packaging>
<name>Project Name App</name>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.0.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.pivotallabs</groupId>
<artifactId>robolectric</artifactId>
<version>1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r6</version>
</dependency>
<dependency>
<groupId>com.actionbarsherlock</groupId>
<artifactId>library</artifactId>
<version>4.1.0</version>
<type>apklib</type>
</dependency>
<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>15</platform>
</sdk>
</configuration>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
वहाँ कुछ परियोजना config मैं याद कर रहा हूँ है?
आप robolectric के 1.2-SNAPSHOT संस्करण के साथ एक ही त्रुटि मिलती है? – redwoolf
@redwoolf: संस्करण को पर सेट करना 1.2-SNAPSHOT पोम में यह त्रुटि दी गई: "com.pivotallabs के लिए POM: robolectric: jar: 1.2-SNAPSHOT गुम है, कोई निर्भरता जानकारी उपलब्ध नहीं है।" वहाँ एक और तरीका है मैं स्नैपशॉट प्राप्त कर सकते है? –
colabug
हां आपको अपने पोम में या अपनी सेटिंग्स में स्नैपशॉट रेपो जोड़ने की जरूरत है। http://stackoverflow.com/a/7717234/112263 – redwoolf