4

, пожалуйста, помогите. У меня действительно ужасное время с настройкой моего тестирования для студии Android.Android Studio: Тестирование: зависимости библиотек, которые были скомпилированы с использованием java 8 или выше

Я загрузил пример калькулятора, чтобы испытать тестирование кода кумберса из github gumub. https://github.com/cucumber/cucumber-jvm/tree/master/android (некоторые из этих брендов, кстати, очень странные)

Я попытался использовать его в студии Android. Программа отлично работает (yay!). Однако тест не делает. У меня действительно ужасное сообщение, которое просто преследует меня каждый раз, когда я запускаю его.

*To run dex in process, the Gradle daemon needs a larger heap. 
It currently has approximately 910 MB. 
For faster builds, increase the maximum heap size for the Gradle daemon to more than 2048 MB. 
To do this set org.gradle.jvmargs=-Xmx2048M in the project gradle.properties. 
For more information see https://docs.gradle.org/current/userguide/build_environment.html 
Error:Error converting bytecode to dex: 
Cause: Dex cannot parse version 52 byte code. 
This is caused by library dependencies that have been compiled using Java 8 or above. 
If you are using the 'java' gradle plugin in a library submodule add 
targetCompatibility = '1.7' 
sourceCompatibility = '1.7' 
to that submodule's build.gradle file. 
Error:1 error; aborting 
:app:transformClassesWithDexForDebugAndroidTest FAILED 
Error:Execution failed for task ':app:transformClassesWithDexForDebugAndroidTest'. 
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_74\bin\java.exe'' finished with non-zero exit value 1* 

Его совместимость целевой совместимости и источника я имею проблемы с (не попали в остальные же)

Вот Gradle сборки: как вы можете видеть, я изменил совместимость с 1.7

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "boo.thefoodhunt" 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 

     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    sourceSets { 
     debug { 
      assets.srcDirs = ['src/debug/assets', 'src/androidTest/assets/'] 
      res.srcDirs = ['src/debug/res', 'src/androidTest/assets/features'] 
     } 
     main { res.srcDirs = ['src/main/res', 'src/androidTest/assets'] } 
    } 
    dexOptions { 
     incremental true 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.3.0' 

    //TESTING 
    androidTestCompile 'com.android.support.test:testing-support-lib:0.1' 
    androidTestCompile 'com.android.support:support-annotations:23.3.0' 

    //Espresso 
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' 
    androidTestCompile 'com.android.support.test:runner:0.5' 
    androidTestCompile 'com.android.support.test:rules:0.5' 

    //Cucumber 
    androidTestCompile 'info.cukes:cucumber-android:1.2.4' 
    androidTestCompile 'info.cukes:cucumber-picocontainer:1.2.4' 
} 

тест, который не в состоянии выполнить:

package boo.thefoodhunt; 

import android.test.ActivityInstrumentationTestCase2; 

import cucumber.api.CucumberOptions; 
import cucumber.api.java.en.Given; 
import cucumber.api.java.en.Then; 
import cucumber.api.java.en.When; 

import static android.support.test.espresso.Espresso.onView; 
import static android.support.test.espresso.action.ViewActions.click; 
import static android.support.test.espresso.assertion.ViewAssertions.matches; 
import static android.support.test.espresso.matcher.ViewMatchers.withId; 
import static android.support.test.espresso.matcher.ViewMatchers.withText; 

@CucumberOptions(features = "features") 
public class CalculatorActivitySteps extends ActivityInstrumentationTestCase2<CalculatorActivity> { 

    public CalculatorActivitySteps(SomeDependency dependency) { 
     super(CalculatorActivity.class); 
     assertNotNull(dependency); 
    } 

    @Given("^I have a CalculatorActivity$") 
    public void I_have_a_CalculatorActivity() { 
     assertNotNull(getActivity()); 
    } 

    @When("^I press (\\d)$") 
    public void I_press_d(final int d) { 
     switch (d) { 
      case 0: 
       onView(withId(R.id.btn_d_0)).perform(click()); 
       break; 
      case 1: 
       onView(withId(R.id.btn_d_1)).perform(click()); 
       break; 
      case 2: 
       onView(withId(R.id.btn_d_2)).perform(click()); 
       break; 
      case 3: 
       onView(withId(R.id.btn_d_3)).perform(click()); 
       break; 
      case 4: 
       onView(withId(R.id.btn_d_4)).perform(click()); 
       break; 
      case 5: 
       onView(withId(R.id.btn_d_5)).perform(click()); 
       break; 
      case 6: 
       onView(withId(R.id.btn_d_6)).perform(click()); 
       break; 
      case 7: 
       onView(withId(R.id.btn_d_7)).perform(click()); 
       break; 
      case 8: 
       onView(withId(R.id.btn_d_8)).perform(click()); 
       break; 
      case 9: 
       onView(withId(R.id.btn_d_9)).perform(click()); 
       break; 
     } 
    } 

    @When("^I press ([+–x\\/=])$") 
    public void I_press_op(final char op) { 
     switch (op) { 
      case '+': 
       onView(withId(R.id.btn_op_add)).perform(click()); 
       break; 
      case '–': 
       onView(withId(R.id.btn_op_subtract)).perform(click()); 
       break; 
      case 'x': 
       onView(withId(R.id.btn_op_multiply)).perform(click()); 
       break; 
      case '/': 
       onView(withId(R.id.btn_op_divide)).perform(click()); 
       break; 
      case '=': 
       onView(withId(R.id.btn_op_equals)).perform(click()); 
       break; 
     } 
    } 

    @Then("^I should see (\\S+) on the display$") 
    public void I_should_see_s_on_the_display(final String s) { 
     onView(withId(R.id.txt_calc_display)).check(matches(withText(s))); 
    } 
} 

Теперь ив пытался т его:

Error when using a jar in my project

и это: Is it possible to use Java 8 for Android development?

и это: Gradle sourceCompatibility has no effect to subprojects

в обоих Gradle проекта и приложения Gradle. Но я думаю, что это единственное, что приходит с тестированием ... это не поможет и что-то связано с зависимостями, и для этого я довольно застрял. Может кто поможет! заранее спасибо

+0

oh the jdk .... в настоящее время jdk1.8.0_74 и im с помощью андроид-студии 2.1 – Boo

ответ

0

Ok для любого, что с той же проблемой. Я обнял его! (Я думаю!), Что приводит к другим проблемам с программой, но, по крайней мере, у меня есть тест и его связь с устройством и чтение тестов без использования paddy.Испытания однако приходят с совершенно новой проблемой (на другой вопрос, еще один день) Новая проблема, если кому-то интересно:

Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints: 
at least 90 percent of the view's area is displayed to the user. 

им угадать, что его что-то делать с не все кнопки не в режиме просмотра (не мой дизайн! FYI), поэтому мы корректируем это завтра.

Теперь перейдем к решению (МОГ)

https://github.com/cucumber/cucumber-jvm/issues/893: комментарий от programmerdave 18 ноября 2015 года помогли с Gradle установки.

Это принесло совершенно новую ошибку!

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. 
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.squareup.okhttp/okhttp/pom.properties 
    File1: C:\Users\kyleparker\.gradle\caches\modules-2\files-2.1\com.crashlytics.android\crashlytics\1.1.13\e821eafa1bf489a26bdb71f95078c26785b37a1\crashlytics-1.1.13.jar 
    File2: C:\Users\kyleparker\.gradle\caches\modules-2\files-2.1\com.squareup.okhttp\okhttp\2.4.0\40340c0748190fe897baf7bffbc1b282734294e5\okhttp-2.4.0.jar 

Но удалось исправить это довольно быстро. благодаря этим ребятам https://code.google.com/p/android/issues/detail?id=194980

Во всяком случае, видимо, две разные проблемы, вызвавшие хаос (день и половина).

Херес Gradle для демо Calkulator (ссылка на вопрос) - все это чувствует себя немного грязный, и если кто-нибудь имеет приятный решение очиститель, пожалуйста, дайте мне знать

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "cucumber.cukeulator" 
     minSdkVersion 16 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 

     testApplicationId "cucumber.cukeulator.test" 
     testInstrumentationRunner "cucumber.cukeulator.test.Instrumentation" 
    } 

    packagingOptions { 

     //these are the ones that fixed it for me 
     exclude 'META-INF/maven/com.google.guava/guava/pom.properties' 
     exclude 'META-INF/maven/com.google.guava/guava/pom.xml' 

     //but im not going to remove my first attempt just in case ;) 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 

    sourceSets { 
     androidTest { 
      assets.srcDirs = ['src/androidTest/assets'] 
     } 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0' 
    androidTestCompile 'com.android.support.test:testing-support-lib:0.1' 

    androidTestCompile('info.cukes:cucumber-android:1.2.4') { 
     exclude module: 'cucumber-jvm-deps' 
    } 

    androidTestCompile('info.cukes:cucumber-picocontainer:1.2.4') { 
     exclude module: 'cucumber-jvm-deps' 
    } 

    // androidTestCompile 'com.android.support:support-annotations:23.1.1' 
    // androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' 

    androidTestCompile 'info.cukes:cucumber-jvm-deps:1.0.3' 

} 

Так что в целом это, кажется, что jvm-deps ...... хорошо кто знал

1

У вас есть зависимость, непонятная, которая скомпилирована для Java 8, и вы указали Java 7 в своей сборке.

Это сообщение об ошибке This is caused by library dependencies that have been compiled using Java 8 or above..

Моим подходом было бы изменить версию Java на 8. Если это не помогло, уменьшите проблему. То есть, начните с нового проекта без зависимостей и кода и добавьте очень мелкие части, пока не найду, что вызвало ошибку выше.

То есть, применить Закон галлов:

«Сложная система, которая работает неизменно находили, эволюционировали от простой системы, которая работала сложная система, разработанная с нуля никогда не работает и не может быть исправлен, чтобы сделать это. . работа Вы должны начать с рабочей простой системы -. Джон Галл (1975, стр.71)»

https://en.wikipedia.org/wiki/John_Gall_%28author%29

+0

Спасибо за ваш совет (и мистер Галл!), я буду Посмотрите еще раз, сегодня. Это был такой простой тестовый пример, который я получил в той мере, в какой я искал общий, а не то, что вы предложили. Я возился с dependeces (Esspresso, All Cucumber и т. Д.) И пытался «исправить» все это, изменив настройки и изменив структуру градации, я, вероятно, сделал это хуже, это был просто неприятный процесс, и он просто ожидал чего-то работать вместе красиво. еще раз спасибо – Boo

Смежные вопросы