Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 格林先生在研究中用刀——谁打破了建筑?_Unit Testing_Maven_Junit - Fatal编程技术网

Unit testing 格林先生在研究中用刀——谁打破了建筑?

Unit testing 格林先生在研究中用刀——谁打破了建筑?,unit-testing,maven,junit,Unit Testing,Maven,Junit,您如何确定构建测试失败的责任?我们有一个大型maven java构建,包含大约80个模块和25000个测试。当我们的每夜工作完成时,我们有一个现有和新失败的列表 当测试失败时,我们有以下数据: 自上次构建以来的提交者 来自单元测试失败的调用堆栈 源代码 maven依赖树 我们可以根据以下内容进行分配: 自上次测试以来犯下的所有罪行 谁上一次接触了测试源文件 最后一次接触测试的人(在调用堆栈中查找测试,查找行,使用SVN责备确定作者) 我想做的是确定测试失败的原因,找到最好的调查员并让他们

您如何确定构建测试失败的责任?我们有一个大型maven java构建,包含大约80个模块和25000个测试。当我们的每夜工作完成时,我们有一个现有和新失败的列表

当测试失败时,我们有以下数据:

  • 自上次构建以来的提交者
  • 来自单元测试失败的调用堆栈
  • 源代码
  • maven依赖树
我们可以根据以下内容进行分配:

  • 自上次测试以来犯下的所有罪行
  • 谁上一次接触了测试源文件
  • 最后一次接触测试的人(在调用堆栈中查找测试,查找行,使用SVN责备确定作者)
我想做的是确定测试失败的原因,找到最好的调查员并让他们修复它。但是,单元测试执行操作、检查和断言,然后抛出。调用堆栈来自断言,而不是问题发生的地方

我想我可以在断言之前扫描文件并跟踪正在使用的对象

  • 查找该对象的源文件。我只看我的物品,不看第三方
  • 确定自上次通过测试后是否对其进行了修改
  • 用责备来指认作者
是否有人对处理部分或全部分析的插件有更好的想法或了解

谢谢


Peter

如果测试的名称更好,并且失败时输出的消息更好,那么理论上,您不需要直接跟踪问题的原因。这会让这个人明白,当他们做出我的承诺时,为什么/如何破坏代码。我不知道这在现实中是否是一个选项,尤其是因为更糟糕的情况是,您可能需要修改25000个测试


听起来你想要的工具已经是你正在使用的工具了。您已经完成了自动测试,并列出了构建中断时提交的人员。我认为最大的问题是你的反馈循环需要一整晚的时间。如果您有更多频繁运行的单元测试,那么当您破坏构建时会更加明显,因为您会更快地得到通知

是的,我可以将构建分解为单独的模块构建,这些模块构建在CI中运行,并在一天中执行测试。我使用的是maven,所以配置不会那么困难。