Intereting Posts
Скопируйте файлы из папки SD-карты в другую папку на SD-карте Как отменить модифицированный реактивный запрос в java? Как открыть диалоговое окно с текстовой записью на экране предпочтений? Android: gravity = "right" не работает на всех устройствах для арабского и других языков RTL Gradle – выборочная компиляция модуля (в противном случае используется барабан повторного использования) Построение неудачно: ошибка с проектом Android в Xamarin.Forms Запись данных ZipEntry в строку Как сделать представление заполнить пространство, доступное для него? Сравнение строк в привязке данных Android Базовый уровень шрифта для Android, привязанный к сетке 4dp Что такое Android-эквивалент дисплея: нет в CSS? Как ссылаться на выведенный из проекта библиотеки проект в макет основного проекта в Android? GetExternalCacheDir () возвращает значение null после очистки данных Ссылка android.target.classpath не найдена Webview избегает предупреждения безопасности из игры Google при реализации onReceivedSslError

Как вы интегрируете Robolectric, Maven, ActionBarSherlock (и предпочтительно + IntelliJ) в проект Android?

Я несколько секунд стуча головой о стену, пытаясь получить maven, robolectric, actionbar sherlock и intellij, чтобы все играли хорошо. На данный момент я отказался от разработки с intellij и сосредоточился на maven.

У меня есть приложение с панелью действий, когда я пропускаю тесты в сборке maven (что говорит мне, что я готов перейти на фронт интеграции ActionBar). Конструкция IntelliJ не работает на ManifestParsingTest.java, жалуясь, что она не знает, где находится юнит (среди прочих вопросов).

Робоэлектрическая интеграция

У меня уже был Robolectric, успешно работающий в проекте. Я скопировал файлы из jake Wharton в src/test/java/com/blah/blah/support/ (кроме ShadowSherlockFragmentActivity.java который живет в src/test/java/com/blah/blah/support/shadows/ ) и помещает Эта строка в конструкторе для моего пользовательского тестового бегуна (живет в папке support ):

 ActionBarSherlock.registerImplementation(ActionBarSherlockRobolectric.class); 

Ошибки mvn

Я сталкиваюсь с этими ошибками сборки (IntelliJ также имеет красные 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> при <?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> , <?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> 

Есть ли какая-то конфигурация проекта, которую я пропускаю?

Solutions Collecting From Web of "Как вы интегрируете Robolectric, Maven, ActionBarSherlock (и предпочтительно + IntelliJ) в проект Android?"

На Square, чтобы поддержать этот вариант использования, мы используем модифицированную версию Robolectric . Мы работаем с Pivotal, чтобы избавить нас от использования вилки и необходимых изменений вверх по течению в основной репозиторий. Необходимые изменения – это крючки в систему загрузки ресурсов. Эти методы в настоящее время являются частными, что является причиной сбоев компиляции, которые вы видите.

Pivotal точно не делает релизы в каком-либо подобии частых способов, поэтому, если изменения сделают это вверх по течению, вам, скорее всего, придется использовать версию SNAPSHOT некоторое время.

Я мог бы заставить его работать.

Попробуй это:

  • Переместить зависимости robolectric и junit до конца.

  • Указать src и тестовый путь в теге сборки, после finalname и перед плагинами.

  • Перестроить и запустить тест с панели инструментов maven.

     <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>4.0.1.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <version>r6</version> </dependency> <dependency> <groupId>org.roboguice</groupId> <artifactId>roboguice</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>com.octo.android.robospice</groupId> <artifactId>robospice-spring-android</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.9</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>actionbarsherlock</artifactId> <version>4.2.0</version> <type>apklib</type> </dependency> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>actionbarsherlock</artifactId> <version>4.2.0</version> </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> </dependencies> <build> <finalName>${project.artifactId}</finalName> <sourceDirectory>src</sourceDirectory> <testSourceDirectory>test</testSourceDirectory> <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> при <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>4.0.1.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <version>r6</version> </dependency> <dependency> <groupId>org.roboguice</groupId> <artifactId>roboguice</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>com.octo.android.robospice</groupId> <artifactId>robospice-spring-android</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.9</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>actionbarsherlock</artifactId> <version>4.2.0</version> <type>apklib</type> </dependency> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>actionbarsherlock</artifactId> <version>4.2.0</version> </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> </dependencies> <build> <finalName>${project.artifactId}</finalName> <sourceDirectory>src</sourceDirectory> <testSourceDirectory>test</testSourceDirectory> <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> , <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>4.0.1.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <version>r6</version> </dependency> <dependency> <groupId>org.roboguice</groupId> <artifactId>roboguice</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>com.octo.android.robospice</groupId> <artifactId>robospice-spring-android</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.9</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>actionbarsherlock</artifactId> <version>4.2.0</version> <type>apklib</type> </dependency> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>actionbarsherlock</artifactId> <version>4.2.0</version> </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> </dependencies> <build> <finalName>${project.artifactId}</finalName> <sourceDirectory>src</sourceDirectory> <testSourceDirectory>test</testSourceDirectory> <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>