草庐IT

android - 如何使用 mockk 模拟 Build.VERSION.SDK_INT

如何在mockk中模拟Build.VERSION.SDK_INT?我做了以下事情:@TestfuntestFoo(){mockkStatic(Build::class)mockkStatic(Build.VERSION::class)every{Build.VERSION.SDK_INT}answers{22}}我最终得到io.mockk.MockKException:Missingcallsinsideevery{...}block.一旦代码命中everyblock。 最佳答案 您可以像这样围绕构建配置构建一个包装器objectM

使用 Mockk 和 Truth 在 Android 中进行单元测试(II):模拟的高级功能

介绍本文解释了使用Mockk和Truth库在Android上进行单元测试的更高级的模拟概念。测试模拟类字段的变化很多时候,由于某种原因,我们需要检查当我们调用SUT(被测对象)方法时,其依赖项之一(我们已经模拟)中的某些内容发生了变化。让我们看下面的例子:继续类Car和Engine前面的例子(其中每辆车都依赖于一个引擎),我们可能想要验证,当我们启动汽车时,引擎进入“on”状态。但是,我们没有这样的对象Engine,而是它的模拟对象,因此如果我们尝试获取的值isStarted,我们将在测试中遇到异常。为此,使用了关键字capture:classCarTest{lateinitvarengine

android - 模拟每个 { ... } block 内的缺失调用

我一直在尝试用mockk模拟一些东西:我在gradle上有以下设置root:|--App(justasampleappfortheSDK)|--SDK(SDKwedevelop)所以我正在为SDK编写一个androidTest并尝试模拟Foo.kt。Foo类没有什么不寻常的,只是直接classFoo(privatevalsomeParams){所以使用androidTestImplementation"io.mockk:mockk-android:1.8.13"模拟运行:valmock:Foo=mockk()//valmock:Foo=mockkClass(Foo::class)//a

android - 模拟每个 { ... } block 内的缺失调用

我一直在尝试用mockk模拟一些东西:我在gradle上有以下设置root:|--App(justasampleappfortheSDK)|--SDK(SDKwedevelop)所以我正在为SDK编写一个androidTest并尝试模拟Foo.kt。Foo类没有什么不寻常的,只是直接classFoo(privatevalsomeParams){所以使用androidTestImplementation"io.mockk:mockk-android:1.8.13"模拟运行:valmock:Foo=mockk()//valmock:Foo=mockkClass(Foo::class)//a

java - 使用 Mockk 模拟静态 java 方法

我们目前正在使用java和kotlin项目,慢慢将整个代码迁移到后者。是否可以使用Mockk模拟Uri.parse()等静态方法?示例代码是什么样子的? 最佳答案 除了oleksiyp回答:2022年更新:你必须使用unmockStatic()。如果自动取消模拟对您不起作用,请阅读其他答案。mock1.8.1之后:Mockk1.8.1版已弃用以下解决方案。在那个版本之后你应该这样做:@BeforefunmockAllUriInteractions(){mockkStatic(Uri::class)every{Uri.parse("h