Странная ошибка с Android Studio 2.2 при запуске одного теста непосредственно в среде IDE – у меня будет либо «Нет тестов», либо выполняется мой ранее скомпилированный тест.
Пример:
@Test fun testyTest() { }
Я создам этот тест и получаю «Нет тестов». Поэтому я перезапускаю, и тест найден! Очевидно, что вышеупомянутый тест проходит, потому что он пуст. Затем я хочу, чтобы мой тест потерпел неудачу. Поэтому я вручную бросаю исключение и добавляю одну строку кода ниже.
@Test fun testyTest() { throw RuntimeException() }
Теперь я перекомпиляю, и этот тест проходит тоже, потому что IntelliJ почему-то кэшировал предыдущий тест и повторяет это. Чтобы этот тест был неудачным, я должен перезапустить среду IDE.
Кто-нибудь знает, что происходит? Примечание. Я очень сильно использую Kotlin в этом проекте.
EDIT 2: Это JVM-тест (не-android, src/test/java
) в проекте библиотеки андроидов.
EDIT: вот полный тестовый класс
package com.example.zak import org.junit.Before import org.junit.Test class ExampleTest { @Before fun setUp() { } @Test fun testyTest() { //throw RuntimeException() } }
Нашел исправление … проблема возникает только в случае конфликта вариантов выбора. Исправлена проблема устранения проблемы.
Проверьте, есть ли у вас все эти зависимости:
dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" testCompile 'junit:junit:4.11' testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" }
Также, когда вы используете Kotlin
отключите полностью Instant Run
in File -> Preferences
.
EDIT: Вы говорите об испытаниях в библиотеке – modules
и project
имеют эти зависимости и правильную конфигурацию.
Похоже, что после восстановления Gradle тест отлично работает.
Я нашел это описание ошибки в системе отслеживания ошибок JetBrains IntelliJ. Вот URL:
https://youtrack.jetbrains.com/issue/IDEA-149275
В нем обсуждаются изменения, которые были внесены в классную загрузку, которые могут повлиять на выполнение теста Junit. Обходное решение предлагается путем добавления строки в файл конфигурации options.xml. Вот пример обходного пути для окон Windows – по мере необходимости необходимо изменить свою платформу. Версия Android ниже – текущая версия 2.2:
1) выход из студии Android
2) перейдите в каталог config / options для вашей версии Android:
например C:\Users\YourNameHere\.AndroidStudio2.2\config\options
3), затем добавьте <property name="idea.dynamic.classpath.jar" value="false" />
внутри блока компонентов файла options.xml:
<component name="PropertiesComponent"> <property name="idea.dynamic.classpath.jar" value="false" />
Запустите Android Studio и попробуйте запустить локальные тесты Junit.
Думаю, вы используете град в своем проекте? У меня была такая же проблема, и решение заключалось в том, чтобы использовать gradle для выполнения тестов (внутри списка задач gradle) вместо использования меню (щелкните правой кнопкой мыши на тестовом файле и запустите тесты).