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

当在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() } } 

找到解决方案…只有在发生变体选择冲突时才会出现该问题。 消除冲突解决了这个问题。

在这里输入图像描述

检查你是否有所有这些依赖:

 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重建后,测试工作正常。

我在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测试。

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