并行运行 junit 测试时的竞争条件

2024-01-04

我想知道如果我并行运行测试并且两个测试(如下)共享一个实例变量,是否会有一些竞争条件?所以我的测试类使用 SpringJunit4ClassRunner 运行,并且我有 2 个测试方法 a() 和 b(),变量state将从每个测试中修改或重新分配,并且 doSomethingWithState() 将使用该变量state并将其传递给测试方法。我知道与maven-surefire-插件 http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#parallel您可以在方法级别运行它,a() 和 b() 都将分配给一个线程并并行运行。

@RunWith(SpringJUnit4ClassRunner.class)
public class TestA {

     private Object state;

     @Test
     public void a() {
          stateObjectA();
          doSomethingWithState();
          assertion();
     } 

     @Test
     public void b() {
          stateObjectB();
          doSomethingWithState();
          assertion();
     }

     private void stateObjectA() {
          // do some mocking and setup state
     }

     private void stateObjectB() {
          // do some mocking and setup state
     }

     private void doSomethingWithState() {
          // use the state object and feed into the testing method
     }
}

我想唯一合理的答案是:depends...根据您的确切上下文和代码库。

竞争条件的本质是:你有多个线程操纵(“写入”)shared数据。您的冗长问题可以归结为正是这样的设置。所以有高潜力对于您上面描述的设置中的竞争条件。

然后:如果您谈论的是生产代码中的方法或某些测试框架调用的方法,则没有任何区别。因为竞争条件并不关心这一点。他们只“关心”多个线程写入共享数据。

这就是这里最重要的!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

并行运行 junit 测试时的竞争条件 的相关文章

随机推荐

  • GUID 与 INT IDENTITY [重复]

    这个问题在这里已经有答案了 可能的重复 您觉得您的主键怎么样 https stackoverflow com questions 404040 how do you like your primary keys 我知道使用 GUID 的好处
  • 在 CSS3 变量定义中使用 SCSS 变量不起作用?

    我正在研究如何将样式应用于客户端项目中的可重用 Angular 组件 看主题 样式 Angular 2 可重用组件库 https stackoverflow com questions 44571437 theme style angula
  • 用于查找两个列表之间差异的库函数 - OCaml

    有没有库函数可以找List1 minus elements that appear in List2 我一直在谷歌上搜索并没有发现太多 似乎没有too自己写的很简单 我编写了一个函数来从列表中删除特定元素 但这要简单得多 let rec d
  • SQL 空间连接

    我有两张表 一张以点作为地理 另一张以多边形作为地理 我可以通过以下查询找到单个点落在哪个多边形 从点表中 DECLARE p geography select p PointGeom from dbo PointTable where I
  • Google Cloud SDK 与 Google Cloud 客户端库

    它们有何不同 每个的用例是什么 我是否可以专门使用一个 例如 如果我更熟悉 NET 我可以使用客户端库 适用于 NET 完成使用 python 和 SDK 可以完成的所有操作 谷歌云SDKhttps cloud google com sdk
  • Haskell 中的简单字数统计

    这是我的第一个 haskell 程序 wordCount 接受单词列表并返回一个元组 其中每个不区分大小写的单词与其使用计数配对 对于改进代码可读性或性能有什么建议吗 import List import Char uniqueCountI
  • ffmpeg 无法识别 Quicktime DV 编解码器

    我在 Mac OSX10 5 上获得了很好的建议 将修改后的 MXF 媒体结构转换为 h264 同时保留多轨音频 但我无法让 ffmpeg 在 Windows 环境中工作 See 这一页 https stackoverflow com qu
  • 如何在谷歌地图多边形内绘制直线

    我使用创建了谷歌地图google map javascript API V3 我正在绘制邮政编码多边形的数量 根据某些条件 多边形具有不同的颜色 现在我想根据某些标准在某些多边形内绘制直线 散列标记 我们怎样才能做到呢 下面是我为绘制多边形
  • PyDev 无法在 Eclipse 中工作

    我最近不得不重置我的 PC 重新启动 Eclipse 后出现此错误 id org python pydev editor PythonEditor 没有编辑器描述符 我尝试寻找解决方案 但其他人喜欢here https stackoverf
  • 创建新的 Google 日历

    我想使用 Android 应用程序在现有帐户上创建新的 Google 日历 例如this http sourceforge net projects lngooglecalsync Windows 应用程序确实如此 该应用程序使用 Gdat
  • 如何更改 :focus 上文本区域的边框颜色

    我想改变焦点上 TEXTAREA 的边框颜色 但我的代码似乎无法正常工作 代码已开启fiddle http fiddle jshell net ffS4S
  • PHP cURL、POST JSON

    我需要发布以下 JSON 代码 但由于某种原因它不起作用 下面是我的代码 fieldString 395609399 the curl request processor function processCurlJsonrequest UR
  • 在并行任务期间跟踪失效的 WebDriver 实例

    我看到一些使用 Selenium WebDriver 运行并行嵌套循环 Web 压力测试的死实例怪异现象 简单的例子是 比如说 点击 300 个独特的页面 每个页面有 100 次展示 我 成功 获得 4 8 个 WebDriver 实例Th
  • 如何在 YouTube 缩略图上叠加播放按钮

    在我正在进行的一个项目中 我们将媒体团队发布的大量 YouTube 视频提取到数据库中 以便我们可以将它们呈现为相关内容 我们希望能够在生成的 YouTube 缩略图上叠加一个播放按钮 以便更明显地表明缩略图代表的是可以播放的视频 我正在寻
  • 有没有办法在Linux平台上编译微软风格的内联汇编代码?

    正如标题中提到的 我想知道有没有办法在 Linux 操作系统 例如 ubuntu 中编译微软风格的内联汇编代码 如下所示 asm mov edi A EMMS 示例代码是内联汇编代码的一部分 可以在win10上使用cl exe编译器成功编译
  • 如何在 Android 中将提示文本置于 EditText 中?

    我需要将提示文本居中EditText在安卓中 我该怎么做呢 为了使提示文本居中以与 EditText 一起使用 您必须确保定义 android ellipsize start 我不知道为什么这会起作用 但确实如此 从个人代码中提取的示例
  • SQL 多重外连接(将 t-sql 连接转换为 ANSI 格式)

    我有 3 个表 t1 t2 t3 我想要一个基于以下条件的结果集 t1 在 t2 t1 的所有行 上有外连接 t1 在 t3 t1 的所有行 上有外连接 t2 在 t3 t2 的所有行 上有外连接 如何在单个查询中使用这些外部 3 个联接
  • 如何按顺时针/逆时针方向对所有多边形点进行排序?

    我一直在阅读贾维斯的算法 虽然它能够按顺时针方向对所有 外部点 进行排序 但内部点将被忽略 如下所示 有谁知道我是否必须实现任何其他算法或任何其他方法来按顺时针方向对每个点进行排序 谢谢 第一步格雷厄姆扫描 https en wikiped
  • 如何允许用户在 Web 应用程序中编辑附件?

    我们使用 ASP NET 创建了一个 Web 应用程序 允许用户上传文档并将其附加到业务实体 如客户 联系人等 该应用程序在内联网上运行 所有文件都通过 Web 应用程序上传到服务器上的共享文件夹中 我希望用户可以直接从网页上open实际文
  • 并行运行 junit 测试时的竞争条件

    我想知道如果我并行运行测试并且两个测试 如下 共享一个实例变量 是否会有一些竞争条件 所以我的测试类使用 SpringJunit4ClassRunner 运行 并且我有 2 个测试方法 a 和 b 变量state将从每个测试中修改或重新分配