0

Я хочу определить модульные тесты для своих классов, и я столкнулся с следующей проблемой. Если я определяю единичный тест внутри папки androidTest (тестирование с помощью инструментария), тогда тест выполняется нормально с действительными результатами. Если, однако, я определяю тест внутри тестовой папки (локальное тестирование), тогда запуск теста генерирует сообщение «class not found:» [classname] «Empty test suite». Это было бы не так уж плохо, и я бы просто запускал все тесты из androidTest, за исключением того, что я хочу использовать покрытие кода, а Android Studio не позволяет мне запускать тесты покрытия из androidTest, но только из теста.Android: местные тесты с охватом кода?

Почему Android Studio не может найти модульные тесты, когда они определены в тестовой папке, но может ли они быть определены в папке androidTest?

Код:

public class SomeTest{ 

    private Context mInstrumentationCtx; 

    @Before 
    public void setup() { 
     mInstrumentationCtx = InstrumentationRegistry.getTargetContext(); 
     // do some setup actions 
    } 

    @Test 
    public void testFirst() throws Exception { 
     Assert.assertEquals(true, true); 
    } 

} 

Gradle конфигурации:

android { 

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

debug { 
      testCoverageEnabled = true 
     } 
} 

testCompile 'junit:junit:4.12' 
    testCompile ('com.android.support.test:runner:0.5', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 

compile 'com.android.support:appcompat-v7:25.1.0' 
+0

как вы проводите тесты (которые не работают)? Вы пытались работать на одном уровне класса/dir? –

+0

Щелкните правой кнопкой мыши на тестовом классе - «запустите [testname] с покрытием» – Jon

+0

работает как ожидалось в недавно созданном проекте в последней AS, мы можем попробовать найти diff –

ответ

1

Может быть не ответ сам по себе

Вы можете попробовать изменить

testCompile ('com.android.support.test:runner:0.5', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 

в

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
    exclude group: 'com.android.support', module: 'support-annotations' 
}) 

, который, по-видимому, используется по умолчанию в последних версиях gradle.

Это работает для меня с последним, но не с бывшим


Edit:

После некоторой борьбы он выглядит как понижение до версии 2.2.3 является в решение сейчас, чем-л должен был измениться в 2.3 бета-версии, которую использовал автор

+0

Я попытался заменить его, но я все еще получаю сбой «Процесс завершен с кодом выхода 1 .. Пустой набор тестов» – Jon

+0

Что такое InstrumentationRegistry в вашем случае? он должен работать в бесформенной настройке? –

+0

Я хочу запустить тесты для оболочки Sqlite, и для этого нужен контекст, а значит, и инструментарийRegistry. Я пробовал комментировать эту строку, но тест терпит неудачу так же – Jon