【问题标题】:I have to restart IDE to run tests我必须重新启动 IDE 才能运行测试
【发布时间】:2016-09-26 15:53:06
【问题描述】:

直接在 IDE 中运行单个测试时,Android Studio 2.2 出现了奇怪的错误 - 我要么“未找到测试”,要么运行我之前编译的测试。

例子:

@Test
fun testyTest() {
}

我将创建此测试,并获得“未找到测试”。所以我重新启动,并找到测试!显然,上面的测试通过了,因为它是空的。接下来,我希望我的测试失败。所以我手动抛出异常并在下面添加一行代码。

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

现在我重新编译,这个测试也通过了,因为 IntelliJ 出于某种原因缓存了以前的测试并重新运行它。要使此测试正确失败 - 我必须重新启动 IDE。

有人知道发生了什么吗?注意 - 我在这个项目中大量使用 Kotlin。

编辑 2:这是一个 android library 项目中的 JVM 测试(非 android,src/test/java)。

编辑:这是一个完整的测试类

package com.example.zak

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


class ExampleTest {

    @Before
    fun setUp() {

    }

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

【问题讨论】:

  • 你能添加你的测试类吗,只看到一点代码还不足以说明问题是什么
  • @piotrek1543 这不相关。一个完全空的测试将通过。如果向测试方法 throw RuntimeException() 添加异常并重新编译然后重新运行测试,它会通过,因为 IntelliJ 以某种方式使用了错误的缓存。我必须重新启动 IDE 才能识别新的代码行
  • 您是否在 Windows 机器上的 Android Studio 中运行测试?在运行 JUnit 测试时,我经常看到“未找到测试”错误。很少有谷歌开发者使用 Windows 平台——因此存在一些未解决的问题,部分原因是缺乏曝光。这是一个讨论:github.com/googlecodelabs/android-testing/issues/27
  • @JimAndreas 实际上在 Mac 上
  • 在 JetBrains 跟踪器上发现错误报告 - 见下文。

标签: android-studio kotlin android-testing


【解决方案1】:

找到了解决方法...仅当存在变体选择冲突时才会出现此问题。消除冲突解决了问题。

【讨论】:

    【解决方案2】:

    检查您是否拥有所有这些依赖项:

    dependencies {
      compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
      testCompile 'junit:junit:4.11'
      testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
    }
    

    另外,当您使用Kotlin 时,请在File -> Preferences 中完全禁用Instant Run

    编辑:您在谈论库中的测试 - 执行 modulesproject 具有这些依赖项和正确配置。

    看起来 Gradle 重建后,测试工作正常。

    【讨论】:

    • 注意 - 这实际上是一个 android 库项目中的 JVM 测试(非 android)。
    【解决方案3】:

    我在 JetBrains IntelliJ 错误跟踪系统中找到了这个错误描述。这是网址:

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

    它讨论了对可能影响 Junit 测试执行的类加载所做的更改。建议通过在 options.xml 配置文件中添加一行来解决此问题。这是 Windows 框的示例解决方法 - 根据您的平台的需要进行更改。以下Android版本为当前2.2版本:

    1) 退出 Android 工作室

    2) 导航到您的 Android 版本的 config/options 目录:

    例如C:\Users\YourNameHere\.AndroidStudio2.2\config\options

    3) 然后在 options.xml 文件的组件块内添加“<property name="idea.dynamic.classpath.jar" value="false" />”行:

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

    启动 Android Studio 并尝试运行本地 Junit 测试。

    【讨论】:

    • 我添加了 kotlin 并几乎完全复制了您的 lib 测试。它在我的系统上运行良好 - 如果我添加异常,它会被正确抛出而无需重新启动。当我被卡住时,您可能会尝试我通常会做的事情,那就是 File / Invalidate Caches/Restart(但您可能已经尝试过!)。因此,总而言之,您的测试在我的系统上运行良好,这表明您的测试系统中有一些有趣的地方。您可以尝试在新文件夹中全新安装 AS2.2。
    • 谢谢!但我终于想通了——看我的回答stackoverflow.com/a/39965565/891242
    【解决方案4】:

    我猜你在你的项目中使用了 gradle?我遇到了完全相同的问题,解决方案是使用 gradle 执行测试(在 gradle 任务列表中)而不是使用菜单(右键单击测试文件并运行测试)。

    【讨论】:

    • 是的。据推测,尽管我们的构建文件中有问题导致了这种情况
    猜你喜欢
    • 2015-06-29
    • 2010-11-10
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2017-08-06
    • 2010-12-25
    相关资源
    最近更新 更多