首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用uTest测试对象或其他单一资源/禁用并行测试

如何使用uTest测试对象或其他单一资源/禁用并行测试
EN

Stack Overflow用户
提问于 2016-02-06 08:02:50
回答 1查看 208关注 0票数 0

https://github.com/lihaoyi/utest

正如文档中所说的,uTest并行运行测试。如果使用,可以按顺序运行一个测试套件中的测试用例。

代码语言:javascript
复制
import utest.ExecutionContext.RunNow

但是sbt运行不同的测试套件总是并行的。https://github.com/lihaoyi/utest#parallel-testing

这通常对性能有好处,但是当测试对象或其他“单一资源”时,这可能会导致问题。如果在多个测试套件中测试或使用相同的对象,这些并行测试可能会相互干扰。

日志记录是一个很好的例子:日志记录可以使用公共工厂对象,在某些情况下,这个对象可以包含状态,比如默认日志记录级别或日志实例的数据结构等。日志记录在几个SW模块/几个测试套件中使用,如果其中一个测试套件测试日志记录本身,那么其他测试套件可能会在日志测试套件中造成随机的错误结果。数据库是“单一资源”的另一个例子。

是否有任何方法限制uTest测试套件的并行运行,以便用户可以决定哪些测试套件总是按顺序运行,哪些测试套件可以并行运行?

例如:按这个顺序运行测试套件: com.XXX.yyy.MyTestSuiteA、com.XXX.yyy.MyTestSuiteB和com.XXX.yyy.MyTestSuiteC,rest并行(D)。

sbt“脚本”不是一个好的解决方案。

代码语言:javascript
复制
sbt testOnly com.XXX.yyy.MyTestSuiteA
sbt testOnly com.XXX.yyy.MyTestSuiteB
sbt testOnly com.XXX.yyy.MyTestSuiteC
sbt testOnly com.XXX.yyy.MyTestSuiteD
sbt testOnly com.XXX.yyy.MyTestSuiteE
sbt testOnly com.XXX.yyy.MyTestSuiteF
...

因为这样就没有什么是并行运行的,我必须列出所有的测试套件。像这样的东西可能是好的:

代码语言:javascript
复制
sbt test -- sequentially com.XXX.yyy.MyTestSuiteA, com.XXX.yyy.MyTestSuiteB, com.XXX.yyy.MyTestSuiteC

这意味着其余的可以并行运行,并以任何顺序运行。或

代码语言:javascript
复制
sbt test -- sequentially 

意味着所有测试套件都是按顺序运行的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-06 09:32:37

下面是一个快速修复,您可以将其添加到项目构建文件中,该文件可用于完整的顺序执行。

代码语言:javascript
复制
parallelExecution in Test := false

引用实际文件。

默认情况下,禁用测试排序的并行执行,sbt并行运行所有任务。因为每个测试都映射到一个任务,默认情况下测试也是并行运行的。若要在给定项目内进行测试,请依次执行: 在Test := false Test中的scala:=可以替换为IntegrationTest,从而只能串行地执行集成测试。请注意,来自不同项目的测试仍然可以同时执行。

对于其他用例,我建议尝试标记测试并专门运行标记测试。

代码语言:javascript
复制
Tags.exclusive(Benchmark)

有关这里的更多信息,请参考此文档。

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

https://stackoverflow.com/questions/35238773

复制
相关文章

相似问题

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