草庐IT

elm-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}为什么它不起作用?如何解决这个问题(我想避免公开方法)?

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!")}}有什么想法吗? 最佳答案

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

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的当前版本中工作,以便从测试类访问这些方法。这些工具将主源路径和测试

java - Android Studio 3.0 金丝雀 1 : Kotlin tests or Java tests referring to Kotlin classes fail

更新已在此处针对此问题提交了一个错误:https://youtrack.jetbrains.com/issue/KT-17951更新2该错误已在AndroidStudio3.0Canary3中修复原帖我刚开始使用AndroidStudio3.0,我从一开始就启用了kotlin支持。我在我的项目中写了一个非常简单的Kotlin类:dataclassWallet(valcoins:Int){funadd(value:Int):Wallet=Wallet(coins+value)funsubstract(value:Int):Wallet=if(coins>value)Wallet(coin

unit-testing - 如何在 Kotlin 中管理单元测试资源,例如启动/停止数据库连接或嵌入式 Elasticsearch 服务器?

在我的KotlinJUnit测试中,我想启动/停止嵌入式服务器并在我的测试中使用它们。我尝试在我的测试类中的方法上使用JUnit@Before注释,它工作正常,但这不是正确的行为,因为它运行每个测试用例而不是只运行一次。因此,我想在方法上使用@BeforeClass注释,但是将其添加到方法会导致错误,指出它必须在静态方法上。Kotlin似乎没有静态方法。这同样适用于静态变量,因为我需要保留对嵌入式服务器的引用以供测试用例使用。那么如何为我的所有测试用例只创建一次这个嵌入式数据库?classMyTest{@Beforefunsetup(){//worksinthatitopensthed

android - 找不到类 : Empty test suite when running unit tests in Android Studio

我的Android应用有一个测试套件,所有单元测试都运行良好。但是,每当我对我的一个单元测试类(例如,ModelUnitTests)进行一次更改时,在尝试再次运行该类时,我都会收到此消息Processfinishedwithexitcode1Classnotfound:"xxx.xxxxxx.xxx.ModelUnitTests"Emptytestsuite.如果我执行gradleclean然后再次运行类测试,它运行良好(但需要4分钟才能完成......),但是新的更改会再次破坏它。关于如何解决这个问题的任何建议?我不确定我应该发布哪个测试配置。我正在使用单元测试Artifact,我的