2016-08-17 2 views
2

Был краткий момент времени, когда представление Build Variants в Android Studio содержало опцию «Unit Tests», и если бы такая опция была проверена, вы могли бы легко запустить свой базовые модульные тесты прямо в Android Studio, просто выбрав класс тестирования и нажав «запустить». Тогда я думаю, что когда Android Studio 2.0 был выпущен, они удалили эту опцию из меню вариантов сборки. Вся документация говорит, что вы должны иметь право щелкнуть правой кнопкой мыши на тестовом классе и сказать «RUN», но всякий раз, когда я это делаю, мне предлагается выбрать цель развертывания, предназначенную для тестирования прибора, и мне это не интересно. Я что-то упустил? Как выполнить базовые модульные тесты в Android Studio 2.1.3?Как запускать простые тесты junit в Android Studio 2.1.3

Это отрывок из моего текущего build.gradle, который содержит код, я необходимый ранее для запуска модульных тестов:

android { 
compileSdkVersion project.COMPILE_SDK_VERSION.toInteger() 
buildToolsVersion project.BUILD_TOOLS_VERSION 

defaultConfig { 
    minSdkVersion project.SDK_MIN_VERSION_LIBRARY 
    targetSdkVersion project.COMPILE_SDK_VERSION.toInteger() 
    versionName project.VERSION_NAME 
    versionCode project.VERSION_CODE.toInteger() 


} 
lintOptions { 
    abortOnError false 
} 
buildTypes { 
    debug{ 
     versionNameSuffix = "DEBUG" 
    } 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
sourceSets { 
    androidTest { 
     setRoot('src/test') 
     java.srcDir file('src/test/java') 
     resources.srcDir file('src/test/resources') 
    } 

} 
testOptions { 
    unitTests.returnDefaultValues = true 
} 
android.testOptions.unitTests.all { 
    // Configure includes/excludes 
    include '**/*Test.class' 
    exclude '**/espresso/**/*.class' 

    // Configure max heap size of the test JVM 
    maxHeapSize = '2048m' 

    // Configure the test JVM arguments - Does not apply to Java 8 
    jvmArgs '-XX:MaxPermSize=4096m', '-XX:-UseSplitVerifier' 

    // Specify max number of processes (default is 1) 
    maxParallelForks = 4 

    // Specify max number of test classes to execute in a test process 
    // before restarting the process (default is unlimited) 
    forkEvery = 250 

    // configure whether failing tests should fail the build 
    ignoreFailures false 

    // use afterTest to listen to the test execution results 
    afterTest { descriptor, result -> 
     println "Executing test for ${descriptor.parent}: ${descriptor.name} with result: ${result.resultType}" 
    } 
} 

}

+0

«Как вы проводите базовые модульные тесты в Android Studio 2.1.3?» - вы только что описали (щелкните правой кнопкой мыши класс и выберите «Выполнить»), или щелкните значок желоба в редакторе рядом с объявлением класса. «но всякий раз, когда я это делаю, мне предлагается выбрать цель развертывания, предназначенную для тестирования прибора, и меня это не интересуют» - это ваши модульные тесты в 'test /' sourceset в вашем модуле? Делали ли вы что-нибудь напуганное в 'build.gradle', которое путается с наборами исходников? – CommonsWare

+0

Ahh .. Да, я сделал! У меня был код, который был необходим в прошлые годы. Я обновил свой вопрос с помощью соответствующего кода. Вы видите проблему? – JohnRock

ответ

2

У вас есть androidTest sourceset преодолено посмотреть в src/test/. Следовательно, Gradle считает, что ваш код test/ представляет собой контрольно-измерительные тесты.

Должен ли я просто удалить весь блок setsSets?

В идеале, вы будете следовать конфигурации акций: androidTest/ проводит испытания измерительных приборов, test/ проводит испытания блока.

Если вам нужно что-то еще, все в порядке. Однако, когда вы щелкаете правой кнопкой мыши на классе контрольно-измерительных приборов и выбираете Run, он запускает контрольно-измерительный тест. Итак, если вы хотите, чтобы androidTest/ проводил модульные тесты, и instrumentationTestBecauseLongDirectoryNamesAreFun/, чтобы провести контрольно-измерительные тесты, это прекрасно, но вам нужно будет следить за тем, что там, где себя.

Итак, освобождаетесь ли вы от закрытия sourceSets или обновляете его, чтобы отразить, где вы хотите, чтобы ваши контрольные тесты и модульные тесты шли, зависит от вас.

+0

Конечно. Я удалил закрытие sourceSets, чтобы перейти со стандартной конфигурацией, и все работает. Спасибо. – JohnRock

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