直接在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()
}
}
答案 0 :(得分:4)
答案 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
。
modules
和project
具有这些依赖关系和正确的配置。
看起来像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任务列表中)而不是使用菜单(右键单击测试文件并运行测试)。