我必须重新启动IDE才能运行测试

时间:2016-09-26 15:53:07

标签: android-studio kotlin android-testing

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

示例:

@Test
fun testyTest() {
}

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

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

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

任何人都知道发生了什么事吗?注意 - 我在这个项目中使用Kotlin非常重要。

编辑2:这是一个android 项目中的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()
    }
}

4 个答案:

答案 0 :(得分:4)

找到修复程序......只有在存在变体选择冲突时才会出现此问题。删除冲突解决了这个问题。

enter image description here

答案 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时,请在Instant Run中完全停用File -> Preferences

编辑:您正在讨论库中的测试 - modulesproject具有这些依赖关系和正确的配置。

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

答案 2 :(得分:2)

我在JetBrains IntelliJ错误跟踪系统中发现了这个错误描述。这是URL:

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

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

1)退出Android工作室

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

e.g。 JSONObject obj = new JSONObject(); obj.put("title2", "info2");

3)然后在options.xml文件的组件块中添加“C:\Users\YourNameHere\.AndroidStudio2.2\config\options”行:

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

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

答案 3 :(得分:1)

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