软件测试学习笔记丨 JUnit5 并行数据同步
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/28211
Synchronization
共享资源的同步
JUnit5 以 @ResourceLock 注解的形式为我们提供了这样的机制。
串行用例
可以看到单线程的时候每次测试用例断言都通过,说明可以正确的拿到对应的值。
并行用例
如果换成多线程的时候,可以看到代码不稳定性,有时断言通过,有时断言失败。
这个时候如果想要进行对应的代码健壮性应该怎样修改呢??
@ResourceLock
@ResourceLock 相当于 Java 代码中的 synchronized 、@Synchronized
@ResourceLock 注解为 测试类 和 测试方法 提供声明式同步机制。
@ResourceLock 注解有两个参数
一个是 String 指定唯一标识共享资源的值
资源值可以是 预定义 的或 用户定义 的
一个是 ResourceAccessMode 指定访问资源的模式
访问模式可以是 READ 「只读」和 READ_WRITE「读和写」
多线程报错
加锁
预定义资源
Resources.SYSTEM_PROPERTIES 表示 Java 的系统属性。
Resources.SYSTEM_OUT 代表当前进程的标准输出流。
Resources.SYSTEM_ERR 表示当前进程的标准错误流。
Resources.LOCALE 当前 JVM 实例的默认语言环境。
Resources.TIMEZONE 当前 JVM 实例的默认时区。
自定义资源
全局用户
如果是 SAME_THREAD,运行测试用例的断言结果都是正常,但是当使用了并发执行,对应的用例就会报错。
解决:在对应测试方法上添加相关的 @ResourceLock
自定义资源
1.自定义类的全限定类名为 value 值
2.如果是没有值的写入,对应 mode 为 READ「只可读」;如果有内容写入自定义类,对应 mode 为 READ_WRITE「既可读又可写」
总结
并行测试对应共享数据可以通过 @ResourceLock
来进行数据的同步
软件测试开发免费视频教程分享
版权声明: 本文为 InfoQ 作者【测试人】的原创文章。
原文链接:【http://xie.infoq.cn/article/b0ecbd38ba04697b52f8c91d3】。文章转载请联系作者。
评论