首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Junit 5 Assertions.fail()不能推断Kotlin的类型

Junit 5 Assertions.fail()不能推断Kotlin的类型
EN

Stack Overflow用户
提问于 2018-10-24 10:46:44
回答 1查看 3K关注 0票数 4

当我试图在Kotlin测试中使用JUnit 5 Assertions.fail时,由于无法推断参数V,所以编译失败:

代码语言:javascript
复制
import org.junit.jupiter.api.Assertions.fail
internal class MyTests {
   @Test
   fun simpleTest() {
     fail("Does not compile") 
   }
}

当然,解决这个问题的一个简单办法是:

代码语言:javascript
复制
import org.junit.jupiter.api.Assertions.fail
internal class MyTests {
   @Test
   fun simpleTest() {
     val result: Any = fail("Compiles") 
   }
}

但是,我不希望在代码中创建一个未使用的值。是否有一种无需声明val就可以定义类型的方法?为什么在科特林会发生这种事?Java在泛型方面没有这样的问题:

代码语言:javascript
复制
import org.junit.jupiter.api.Assertions.fail;
class MyJavaTests {
    @Test
    public void simpleTest() {
        fail("Compiles);
    }
}

编辑:我在发布问题后立即发现,解决方案是将调用参数化:

代码语言:javascript
复制
import org.junit.jupiter.api.Assertions.fail
internal class MyTests {
   @Test
   fun simpleTest() {
     fail<Any>("Does not compile") 
   }
 }

然而,我仍然愿意接受一个能解释为什么我需要在科特林做这件事的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-24 11:01:24

请参阅本期:https://github.com/junit-team/junit5/issues/1209

这似乎已经在junit-jupiter Assertions.kt文件中作为org.junit.jupiter.api包中的顶级函数进行了修正。

导入org.junit.jupiter.api.fail而不是org.junit.jupiter.api.Assertions.fail

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52967039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档