首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Mockk的KotlinTest并行

带有Mockk的KotlinTest并行
EN

Stack Overflow用户
提问于 2020-01-10 17:10:41
回答 1查看 1.1K关注 0票数 2

因此,我一直在结合mockk使用kotlintest,但是通过将其添加到ProjectConfig类中,从单线程模式切换到多个线程模式时遇到了一个问题:

代码语言:javascript
复制
override fun parallelism(): Int = Runtime.getRuntime().availableProcessors()

如果我以单模运行。我的所有测试都通过了,但当我切换到并行性时,其中一些使用模拟的测试开始失败。

我到处都有这样的方法:

代码语言:javascript
复制
override fun afterTest(testCase: TestCase, result: TestResult) {
    clearAllMocks()
}

因此,我设想这样的方法可能会在验证块之前清除所有模拟数据,从而导致我的模拟失败。

是否有一种方法可以强制不同线程使用自己的Mockk实例进行测试,并强制clearAllMocks()方法只清除调用线程上的模拟?如果没有,还有哪些其他代码实践可以帮助解决这些问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-12 21:24:24

根据mockk存储库中的这个问题的说法,与另一个测试框架相关的clearAllMocks不能并行运行。

如果您的测试并行执行,则无法使用clearAllMocks。

oleksiyp于2019年5月15日发表评论

这很可能是由于mockk将事物保存在内存中的方式,而clearAllMocks不能正确地(也可能不应该)很好地处理竞争条件。

您可以使用clearMocks单独清除每个实例的模拟。

代码语言:javascript
复制
override fun afterTest(testCase: TestCase, result: TestResult) {
    clearMocks(mockedInstance1, mockedInstance2, mockedInstance3)
}

当并行运行时,它应该能工作。

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

https://stackoverflow.com/questions/59686123

复制
相关文章

相似问题

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