草庐IT

final_test

全部标签

unit-testing - Kotlin 中的测试无法访问 protected 方法

我要考B类:classB:A{overridefuninit(){//doworkhere}}classA{protectedfuninit(){}//willbecalledbyinternallogic}在Java中调用没有问题:b.init()在测试方法中(测试类与测试对象在同一个包中),但是在Kotlin编译器报错:Cannotaccess'init':itisprotectedin'B'@Testfun`checksinit`(){valb=B()b.init()//assertworkdone}为什么它不起作用?如何解决这个问题(我想避免公开方法)?

kotlin - 相当于 Java 的 'public static final string'

在我的Java项目中,我有一个类,我使用publicstaticfinalString属性声明了许多项目常量:publicclassConstants{publicstaticfinalStringKIND_NAME="user";publicstaticfinalStringAVATAR_IMAGE_ID="avatarImageId";publicstaticfinalStringAVATAR_IMAGE_URL="avatarImageUrl";publicstaticfinalStringNAME_COLUMN="name";publicstaticfinalStringTOT

unit-testing - 在 kotlin 中模拟同伴对象函数

我正在使用PowerMock和Roboelectric,并希望模拟一个类的伴随对象函数。当我这样做时,我得到一个错误:org.mockito.exceptions.misusing.MissingMethodInvocationException:when()requiresanargumentwhichhastobe'amethodcallonamock'.Forexample:when(mock.getArticles()).thenReturn(articles);我所拥有的基本上是这样的:openclassMockableClassprivateconstructor(cont

unit-testing - 使用 PowerMock 在 Kotlin 中模拟包级函数

我在Kotlin中有一个包含一些包级函数的文件。//Logger.ktfuninfo(tag:String,message:String){...}funerror{....}我正在测试一个调用这个kotlin文件函数的类的函数,我想模拟它们。我知道包级函数就像Java中的静态方法,所以我一直在考虑使用PowerMock。//MyClass:ClassthatcallsLogger.ktfunctionsclassMyClass{funmyFunction(){info("TAG","Helloworld!")}}有什么想法吗? 最佳答案

kotlin - 如何在 Kotlin 中初始化 final 字段?

假设我用privatefinalStrings(Java)或vals(Kotlin)声明了一个final字段。在初始化期间,我想用调用远程服务的结果来初始化字段。在Java中,我可以在构造函数中初始化它(例如s=RemoteService.result()),但在Kotlin中,我不知道该怎么做,因为据我所知该字段必须在其声明的同一行中初始化。这里有什么解决办法? 最佳答案 您可以在initblock中设置val值:classMyClass{vals:Stringinit{s="value"}}

testing - 内联 Kotlin 方法没有覆盖报告

用inline关键字标记的Kotlin函数在编译期间是内联的,而且似乎代码覆盖率工具(如JaCoCo)无法正确计算代码覆盖率。克服这个问题的通常方法是什么?有没有办法让测试以某种方式避免内联步骤并直接调用测试的方法?是否可以在不排除整个类的情况下跳过所有内联方法的报告生成(例如通过Gradle任务)? 最佳答案 我认为关闭内联是不可能的,因为如果某些函数没有内联,它们可能没有任何意义。这些包括具有reified类型的函数(因为内联创建了类型信息的可用性)和以lambda作为参数的函数,因为它们会影响内联方法的控制流。

unit-testing - 如何测试在 Kotlin 中调用顶级函数的代码?

我对Kotlin很陌生。我有一个调用顶级函数(进行http调用)的类。我正在尝试为我的类(class)编写单元测试,而无需将其发布到网络上。有没有办法模拟/powermock/拦截从我的类(class)到Kotlin顶级函数的调用?classMyClass{funsomeMethod(){//dosomestuff"http://somedomain.com/some-rest/action".httpGet(asList("someKey"to"someValue")).responseString{(request,response,result)->//someprocessin

java - 如何在 kotlin 中实现 finalize()?

今天我在kotlin中实现了一个Closeable,就像我过去在java中所做的那样,我想实现一个finalize()作为最后的手段回退以防客户端代码忘记关闭它,从而使关键资源无法回收。我认为这个资源足够重要,可以添加这个后备,尽管这个后备不可靠。但是,kotlin.Any没有声明finalize方法,这意味着我不能简单地这样做:classResource:Closeable{funclose(){}overridefunfinalize(){close()}}这不好,至少没有它应该的那么好。现在我恢复到纯Java作为一种解决方法。有谁知道如何在纯Kotlin中做到这一点?PS:我目前

unit-testing - 使用 kotlin 协程时,如何对调用挂起函数的函数进行单元测试?

我有这样的课classSomeClass{funsomeFun(){//...Somesynchronouscodeasync{suspendfun()}}privatesuspendfunsuspendFun(){dependency.otherFun().await()//...othercode}}我想对someFun()进行单元测试,所以我编写了一个如下所示的单元测试:@TestfuntestSomeFun(){runBlocking{someClass.someFun()}//...verifies&asserts}但这似乎不起作用,因为在runBlocking中的所有内容完

unit-testing - Kotlin:使内部函数对单元测试可见

如果测试与生产代码位于不同的模块中(这很常见),使内部函数对测试可见的最佳方法是什么?在Java中,我会将生产代码和测试放在同一个包中,并将待测试方法包设为私有(private)(另外,如果唯一的话,添加@VisibleForTest注释让它包私有(private)而不是私有(private)的原因是测试)。不幸的是,Kotlin没有包私有(private)的概念。 最佳答案 用internal访问修饰符标记的类和方法将在Kotlin、Gradle和Intellij的当前版本中工作,以便从测试类访问这些方法。这些工具将主源路径和测试