Я должен перезапустить IDE для запуска тестов

странная ошибка с Android Studio 2.2 при запуске одного теста непосредственно в IDE-у меня либо не будет "никаких тестов", либо запустите мой ранее скомпилированный тест.

пример:

@Test
fun testyTest() {
}

Я создам этот тест и получу "тесты не найдены". Поэтому я перезапускаю, и тест найден! Очевидно, что вышеупомянутый тест проходит, потому что он пуст. Затем я хочу, чтобы мой тест провалился. Поэтому я вручную создаю исключение и добавляю одну строку кода ниже.

@Test
fun testyTest() {
    throw RuntimeException()
}

теперь я перекомпилирую, и этот тест тоже проходит, потому что IntelliJ по какой-то причине кэшировал предыдущий тест и перезапускает его. Чтобы этот тест правильно провалился - я должен перезапустить IDE.

кто-нибудь знает, что происходит? Примечание. Я использую Kotlin довольно сильно в этом проекте.

EDIT 2: это тест JVM (не android,src/test/java) В android библиотека.

EDIT: вот полный тестовый класс

package com.example.zak

import org.junit.Before
import org.junit.Test


class ExampleTest {

    @Before
    fun setUp() {

    }

    @Test
    fun testyTest() {
        //throw RuntimeException()
    }
}

4 ответов


нашел исправить...проблема возникает только при наличии конфликта выбора варианта. Устранение конфликта исправило проблему.

enter image description here


проверьте, есть ли у вас все эти зависимости:

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 на File -> Preferences.

EDIT: вы говорите о тестах в библиотеке-do modules и project имеет эти зависимости и правильную конфигурацию.

похоже, что после перестройки Gradle тест работает нормально.


Я нашел это описание ошибки в системе отслеживания ошибок JetBrains IntelliJ. Вот URL:

https://youtrack.jetbrains.com/issue/IDEA-149275

в нем обсуждается изменение, внесенное в загрузку классов, которое может повлиять на выполнение теста Junit. Обходной путь предлагается путем добавления строки в параметры.файл конфигурации xml. Вот пример обходного пути для окон Windows-изменение по мере необходимости для вашей платформы. Версия Android ниже 2.2 тока выхода:

1) выход из Android studio

2) Перейдите в каталог config / options для вашей версии Android:

например C:\Users\YourNameHere\.AndroidStudio2.2\config\options

3) затем добавьте "<property name="idea.dynamic.classpath.jar" value="false" /> " линия внутри компонентного блока опций.xml-файл:

<component name="PropertiesComponent">
  <property name="idea.dynamic.classpath.jar" value="false" />

запустите Android Studio и попробуйте запустить локальные тесты Junit.


Я думаю, вы используете gradle в своем проекте? У меня была точно такая же проблема, и решением было использовать gradle для выполнения тестов (внутри списка задач gradle) вместо использования меню (щелкните правой кнопкой мыши на тестовом файле и запустите тесты).